* Large speedups of all analytical relaxation dispersion models by converting the R<sub>2eff</sub> calculations and value error checking from single values to numpy arrays.
* Edge cases where function failures occur are now properly handled for all analytical relaxation dispersion models.
* Completion of the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function ] backend for the frame order PDB representation.
* relax will now detect when files with *.gz or *.bz2 file extensions are being created and automatically gzip or bzip compress the file.
* Small speed up for all the isotropic cone and pseudo-elliptic cone frame order models. The vector length calculation for the numeric PCS integration has been simplified and shifted outside of a loop to take advantage of the speed of numpy.
* All three file arguments for the [http://www.nmr-relax.com/manual/pymol_frame_order.html pymol.frame_order user function ] are now optional.
* Updated all the API documentation links in the dispersion chapter of the manual. These were pointing to http://www.nmr-relax.com/api/3.1/ whereas they should now be point to http://www.nmr-relax.com/api/3.2/.
* Modified a printout in the 'devel_scripts/code_validator' script. This is to clarify that the first method of a class does not need two preceding empty lines.
* Shifted some functions from lib.structure.geometric into their own modules. The angles_regular() and angles_uniform() functions are now in the lib.structure.angles module, and the get_proton_names in lib.structure.conversion.
* Deletion of the pipe_control.structure.main.create_cone_pdb() function. This is only used in the frame order analysis, but has been made redundant by the lib.structure.represent.cone.cone() function.
* Completed the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function ] backend for the frame order PDB representation. Most of this backend, including the axes and cone representations, had been broken for quite a while and were being skipped with an early return statement. This has now been made functional and a few fixes have been made. For the 'rotor' and 'free rotor' model, the neg_cone argument is now ignored so that only one model is produced in the final frame order PDB representation file. For all other models, the rotor representation is no longer centred to the point on axis closest to the centre of mass, as the pivot is unambiguously defined. The rotor representation has also been made larger in these models so that it is outside of the cone, and the propeller blades are now staggered.* Modified py_type from "list" to "float_array" in uf_object type in [user function http://www.nmr-relax.com/manual/dx_map.html dx.map]. [https://gna.org/bugs/?22035 Bug #22035] The dx.map user function is broken in the GUI.
* Added py_type "list_val_or_list_of_list_val" to be handled in GUI uf_objects. [https://gna.org/bugs/?22035 Bug #22035] The dx.map user function is broken in the GUI.
* Modified the frame order constraints so that cone<sub>θ<sub>x</sub></sub> ≤ cone<sub>θ<sub>y</sub></sub>. The linear_constraints() function docstring has been updated to include this constraint.
* Set dim=4 when setting chi surface level in [user function http://www.nmr-relax.com/manual/dx_map.html dx.map].* Fix for the [http://www.nmr-relax.com/manual/n_state_model_cone_pdb.html n_state_model.cone_pdb user function ] for the recent internal structural object changes. The cone arguments should now be called cone_obj.* Renamed the [http://www.nmr-relax.com/manual/relax_disp_set_grid_r20_from_min_r2eff.html relax_disp.set_grid_r20_from_min_r2eff user function ] to [http://www.nmr-relax.com/manual/relax_disp_r20_from_min_r2eff.html relax_disp.r20_from_min_r2eff]. This follows from the proposal at http://thread.gmane.org/gmane.science.nmr.relax.devel/5957.
* Modification to the Sequence_2D GUI element used for some user function windows. The selection_win_show() method has been redefined, as the parent method from the Sequence element is specific for the 1D sequence module. The open_dialog() method has also been modified to use the new selection_win_show(), as well as the parent Sequence class selection_win_data() method.
* Created the User_functions.test_structure_rotate GUI tests. This is to catch [https://gna.org/bugs/?22100 bug #22100], the rotation argument for the [http://www.nmr-relax.com/manual/structure.rotate.html structure.rotate user function ] cannot be changed in the GUI, as an AttributeError is raised.
* Moved py_type "list_val_or_list_of_list_val" to 2D sequence types.
* Added dim dimensions to match the {x, y, z} positions for GUI input in [user function http://www.nmr-relax.com/manual/dx_map.html dx.map].
* Modified the User_functions.test_structure_rotate GUI test to change and check the rotation matrix.
* Some more fixes for the User_functions.test_structure_rotate GUI test. The open_dialog() method cannot be used, as it deletes the window at the end. Instead the selection_win_show() and selection_win_data() method combination is used.
* Expanded the User_functions.test_structure_rotate GUI test. This is to more extensively check the 'float_matrix' user function argument type in the GUI.
* Modified the dim dimensions to (None, 3) to allow the user to change number of points in the GUI. This is for the [user function http://www.nmr-relax.com/manual/dx_map.html dx.map].
* Simplified the User_functions GUI tests. The exec_uf_pipe_create() method has been created to simplify the data pipe creation in the tests.
* Expanded the User_functions.test_structure_rotate GUI test. The rotation matrix argument checks for the Sequence_2D GUI element have been expanded to check that setting nothing (blank element) returns nothing (None). The other checks have also been slightly modified.
* Created the is_list() and is_list_of_lists() functions for the lib.check_types module.
* Clean up of the User_functions.test_structure_rotate GUI test. The invalid value check is simpler and the Sequence_2D GUI object return value is now checked to be None.
* Expanded the User_functions.test_structure_rotate GUI once more. This time the setting of invalid values in the Sequence_2D element itself is now checked. For example for the rotation matrix of the [http://www.nmr-relax.com/manual/structure_rotate.html structure.rotate user function], if a matrix element is set to a string, a NameError is raised.* Created the User_functions.test_dx_map GUI test. This extensively checks the 'point' argument for the [http://www.nmr-relax.com/manual/dx_map.html dx.map user function ] GUI window. This is to catch [https://gna.org/bugs/?22102 bug #22102], the point argument of the dx.map user function being incorrect in the GUI.
* Modified the User_functions.test_dx_map GUI test to catch another problem with the Sequence_2D element.
* Fixes for the frame order PDB presentation in the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function ] backend.
* Expanded the User_functions.test_dx_map GUI test once again. The new test is to set 2 valid points in the wizard, open and close the Sequence_2D window (twice), and check that the points come back.
* Increased the width of the first column of the Sequence_2D GUI element for variable lists. This is so the column title "Number" will fit.
* Added list titles for the [http://www.nmr-relax.com/manual/dx_map.html dx.map user function ] point argument. This is so that the Sequence_2D GUI element will have column titles of 'X coordinate', 'Y coordinate', and 'Z coordinate'.
* The self.variable_length flag is now used throughout the Sequence GUI element.
* The self.variable_length flag is used in one more spot in the Sequence_2D GUI element.
* Created the User_functions.test_structure_add_atom GUI test. This is used to check the operation of the Sequence GUI element via the 'pos' argument of the [http://www.nmr-relax.com/manual/structure_add_atom.html structure.add_atom user function]. This is a list fixed to 3 elements.
* Titles are now handled and set in the Sequence GUI element. The titles will replace the numbering of 1 onwards in the first column of the GUI element.
* Small fix for switched indices in the new User_functions.test_structure_add_atom GUI test.
* Modified the 'pos' argument of the [http://www.nmr-relax.com/manual/structure_add_atom.html structure.add_atom user function]. The argument is now a list of fixed length of 3, and it has the titles 'X coordinate', 'Y coordinate', and 'Z coordinate' which are shown in the GUI.
* Created the User_functions.test_spectrum_read_intensities GUI test to catch [https://gna.org/bugs/?22105 bug #22105]. The problem is that a single file name is split up into many files when the file selection button is clicked, one for each character of the file name.
* Fix for the User_functions.test_spectrum_read_intensities GUI test. A valid value was being checked as invalid.
* The lib.io.open_write_file() function now automatically determines the compression type. This is used by many user functions which create files. The end result for a user is that if they supply a '.gz' or '.bz2' file extension, a gzipped or bzipped file will be produced.
* Removal of the docstring text wrapping in the lib.io module.
* Expanded and improved the docstring for the [http://www.nmr-relax.com/manual/relax_disp_r20_from_min_r2eff.html relax_disp.r20_from_min_r2eff user function]. This follows from http://thread.gmane.org/gmane.science.nmr.relax.devel/5957. The documentation now covers a number of the uses for this user function. The text has also been lightly edited. To fit all the text into the GUI user function window, the size of the dialog and the text high settings have been changed.
* Large improvements for the detection of cross-compilation on Mac OS X systems. The tests for different architecture support now follows the ideas discussed in the post http://thread.gmane.org/gmane.science.nmr.relax.devel/5785/focus=5820. In summary, for each architecture a simple C file is created, compiled with 'gcc -arch xyz', and the resultant binary file tested. To support 64-bit compilation on 32-bit systems, all previously successful architectures are also included in the gcc command. The change allows the 'ppc64' architecture to be reintroduced.
* Fixed the docstring for the det_arch() method of the sconstruct script. This is for the true cross-compilation detection on Mac OS X.
* Fixes for the lib.structure.represent.cone module. The function arguments named 'cone' have been renamed to 'cone_obj' so that they do not clash with the cone() function in the module namespace.
* Fix for the lib.structure.geometric.generate_vector_residues() function. The atom numbers are no longer read from the internal structural object, as these are not reliable. If another geometric representation exists in the object, then the atom numbers could be None. Or loading structures from multiple PDB files can cause the numbering to be repeated or out of order.
* Fix for the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function ] for the rotor models. The rotor axis is no longer defined by spherical angles and therefore needs to be recreated using the create_rotor_axis_alpha() rather than create_rotor_axis_spherical() function from lib.frame_order.rotor_axis.
* Partial fix for [https://gna.org/bugs/?22100 bug #22100], the rotation argument for the structure.rotate user function cannot be changed in the GUI, as an AttributeError is raised. The append_row() method call has been replaced by the correct add_element() call.
* Bug fix for the Sequence_2D GUI element. This is used for the user function windows in the GUI for setting lists of lists or matrices. The GUI element GetValue() method will now return None if nothing is set. This prevents a list of lists of None being added to the main user function window.