Open main menu

Changes

Relax 3.0.0

4,204 bytes added, 12:24, 15 October 2020
Switch to the {{relax developer link}} template to remove dead Gna! links.
{{lowercase title}}
{{infobox relax release| version = 3.0.0| prev = 2.2.5| next = 3.0.1| keywords = relax library| type = Major feature| date = 6 August 2013| manual = yes}} == Description ==
<section begin=description/>
<section end=description/>
== Download ==
<section begin=download/>
<section end=download/>
== CHANGES file ==
<section begin=metadata/>
Version 3.0.0<br/>(6 August 2013, from /trunk)<br/>
http://svn.gna.org/svn/relax/tags/3.0.0
<section end=metadata/>
=== Features ===
<section begin=features/>
<section end=features/>
=== Changes ===
<section begin=changes/>
* The lib.selection.parse_token() function is using the new Python way of splitting strings. This is via the string's split() method.
* Removed the no longer used parser argument for reading PDB files from some unit tests.
* Removed the unit test of the parser argument of the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function]. The argument no longer exists.* Shifted the cone geometric object representation functions to lib.structure.represent.cone. The [http://www.nmr-relax.com/manual/structure_create_cone_pdb.html structure.create_cone_pdb user function ] first calls pipe_control.structure.main.create_cone_pdb() which then calls lib.structure.represent.cone.cone(). This allows the pipe_control function to write out the file and add it to the data pipe's results file list.
* Fixed some name classes in the namespace of pipe_control.structure.mass.
* Shifted the diffusion tensor structural object code to lib.structure.represent.diffusion_tensor. The user function routes to pipe_control.structure.main.create_diff_tensor_pdb(), which pulls the tensor info out of the data store, and then calls the diffusion_tensor() function of lib.structure.represent.diffusion_tensor to create the representation, writes out a PDB file, and finally adds the file to the data pipe's results file list.
* More removals of the now dead parser argument for the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function].
* Removed the parser argument from structure.read_pdb in the stereochemistry auto-analysis.
* Restored the selection object __contains_spin_id() method as contains_spin_id(). This will allow for faster checks for matches to spin ID strings.
* Shifted the lib.xplor module into the lib.software package.
* Shifted the Bruker Dynamics Centre parsing code into the new lib.software.bruker_dc module.
* Deleted the completely unused pipe_control.spectrum.Bruker_import class. This was added by {{relax developer link|username=michaelbieri|text=Michael Bieri }} in Oct 2011, but the code has never been used. Other, simpler code has replaced its functionality.
* Created the Ct.test_bug_20674_ct_analysis_failure system test for catching bug #20674. This was reported by Mengjun Xue <mengjun dott xue att mailbox dott tu-berlin dot de> at https://gna.org/bugs/?20674.
* Decreased the number of Monte Carlo simulations in the Ct.test_bug_20674_ct_analysis_failure system test.
* Created the Jw.bug_20674_jw_mapping system test. This is a modification of the Ct.test_bug_20674_ct_analysis_failure system test for catching bug #20674 ([https://gna.org/bugs/?20674)bug #20674]. The test script was duplicated and the small modifications made to convert it into the J(w&omega;) mapping analysis. This now reveals the same bug but for the J(w&omega;) mapping analysis.
* System test speed ups - decreased the number of Monte Carlo simulations in many tests. Running 500 simulation optimisations in a system test is a total waste of time!
* Converted the bug_20674_jw_mapping.py system test script to use the self._execute_uf() interface. This allows the script to be used in the GUI.
* Created the Mf.test_bug_20683_bdc_inf_values system test. This is for catching bug #20683 ([https://gna.org/bugs/?20683) bug #20683] reported by Mengjun Xue <mengjun dott xue att mailbox dott tu-berlin dot de>. The problem is due to infinite and NaN values in the Bruker Dynamics Centre file.* Ported the changes of r19302 to the consistency testing and J(w&omega;) mapping analyses. This is the code for checking for infinite relaxation rates imported from Bruker Dynamics Centre files.
* Missing imports of the lib.float.isInf() function.
* Modified the bug_20674_ct_analysis_failure.py system test script to use self._execute_uf(). This allows the test to operate as a GUI test, which was failing.
* Created the specific API common method _data_init_spin(). This will be used as a general method for aliasing to data_init() for initialising spin parameters.
* Added printouts for the [http://www.nmr-relax.com/manual/select_read.html select.read ] and [http://www.nmr-relax.com/manual/deselect_read.html deselect.read ] user functions to identify the spins affected.
* Created the new lib.list module with the function count_unique_elements(). This function will be used to determine the unique number of elements in a list.
* Shifted the Sparky peak intensity reading code to lib.software.sparky.read_list_intensity(). This new function comes from the old pipe_control.spectrum.intensity_sparky() function, but with the spin ID code removed.
* The common spin methods of the specific analysis API now ignore parameters not in the model. This affects the _data_init_spin(), _sim_init_values_spin(), and _sim_return_param_spin() methods. The result is that the spin containers no longer hold parameter variables set to None for non-model parameters.
* Created the pipe_control.plotting module. This will be used as a base for the plotting of all types of data. This includes the current OpenDX and Grace modules, as well as future modules. The determine_functions() function has been added and is used to simplify the pipe_control.grace.get_data() function.
* The [http://www.nmr-relax.com/manual/grace_write.html grace.write user function ] data type argument sequence values have changed. Instead of 'spin', this can now be 'res_num' or 'spin_num' to specify that either the residue number or spin number should be plotted on the desired axis. The x_data_type now defaults to 'res_num'.
* Created the pipe_control.mol_res_spin.count_max_spins_per_residue() function. This will be used by the plotting module to determine if more than one spin per residue exists.
* Fixes for the change of the [http://www.nmr-relax.com/manual/grace_write.html grace.write user function ] data type 'spin' to 'res_num'.
* Updated the pipe_control.plotting.determine_functions() function.
* Added the skip_desel flag to the important pipe_control.mol_res_spin.spin_loop() generator function. This is used to skip deselected spins within the loop. As must of the code in relax using the spin_loop() does this anyway, this can be used to simplify many of the spin looping elements in relax.
* Expanded the relax_fit system test script to produce all types of currently supported Grace graphs. This is to more extensively test the [http://www.nmr-relax.com/manual/grace_write.html grace.write user function].* Large redesign of the 2D graphing code in relax. This currently affects only the [http://www.nmr-relax.com/manual/grace_write.html grace.write user function], but the new infrastructure will make it much easier to expand the graphing abilities and to support other 2D graphing software. The plotting code has also been significantly simplified. The pipe_control.grace.get_data() function has been shifted into the pipe_control.plotting module. It has been split up into the base assemble_data() function with the data assembly shifted to assemble_data_scatter(), assemble_data_seq_value() and assemble_data_series_series(). This split massively simplifies the code by not packing all different graph and set combinations into one. In addition the auxiliary functions classify_graph_2D(), fetch_1D_data(), get_functions(), and get_data_type() have been created to maximise code sharing between the different assemble_*() functions.* Modified the relax_fit system test script to generate a new type of graph. This is the residue number sequence verses the peak intensity series data (and vice versa) via the [http://www.nmr-relax.com/manual/grace_write.html grace.write user function]. This is to help in the implementation of this graph type.
* Created the pipe_control.plotting.assemble_data_seq_series() function. This is to allow the residue or spin numbering to be plotted against any series type data (lists or dictionaries), or vice versa.
* Added a link to the PDF user manual from the HTML user manual. This will affect all pages at http://www.nmr-relax.com/manual/ by adding an icon to the navigation bar pointing to the PDF manual at http://download.gna.org/relax/manual/relax.pdf.
* The spin ID string is now being used by the plotting functions. The spin ID was not being passed into the assemble_data_*() functions.
* Changed how pipe_control.plotting.assemble_data_seq_value() determines the number of graph sets. Instead of counting the maximum number of spins per residue, different spin names are now checked across the sequence. This is needed as a single residue could have a different type of spin. This was caught by the Mf.test_dauvergne_protocol system test.
* Modified pipe_control.plotting.assemble_data_series_series() to handle dictionaries with keys as values. This will be useful in, for example, relaxation dispersion for plotting the dispersion curves. In this case, the R2eff values are in a dictionary where the keys are the values to plot against. This is different from the current case where the X and Y data dictionaries are required to have the same keys. These changes expand the capabilities of the [http://www.nmr-relax.com/manual/grace_write.html grace.write user function].
* Formatting change for the auto_analyses __all__ package list.
* Removed the import of the auto-analysis modules into the auto_analyses package __init__ module. This import is not needed.
* The N-state model system test module now imports the auto-analysis to fix an import order error.
* Added a warning for the [http://www.nmr-relax.com/manual/spectrum_read.html spectrum.read user function ] if a peak intensity of zero is encountered. This value can cause singular matrix failures in certain optimisation algorithms.* The [http://www.nmr-relax.com/manual/spectrum_error_analysis.html spectrum.error_analysis user function ] can now be performed on a subset of all spectra. The subset argument has been added to allow the error analysis to be restricted to a subset of all loaded spectral data.
* Created the lib.list.unique_elements() function for returning a list with duplicates removed.
* Shifted the standard deviation code from the Monte Carlo error_analysis() function to the lib package. The new function lib.stats.std() is now used to simplify the error_analysis() function and allow the code to be reused. This will be useful for expanding the pipe_control.monte_carlo.error_analysis() function to handle parameters which are dictionaries, for example as in the relax_disp branch.
* Simplified all of the peak analysis wizard wizard_update_*() methods. They now all defer to the wizard_update_ids() method which updates the spectrum ID fields.
* Simplified the wizard_update_noe_spectrum_type() method as in the previous commit.
* Fixes for the [http://www.nmr-relax.com/manual/frq_set.html frq.set user function ] in the GUI. The ID list is now set to the spectrum IDs, and the frequency units are no longer all fused into one string.
* Unicode is now used for the tau symbol in the model-free model parameter lists in the GUI. This is only when modifying the models to optimise, which shouldn't be changed anyway.
* Removed the 'string' from 'Spectrum ID string' in the spectrum list GUI element. This is a GUI - the word string is meaningless here!
* More unicode strings are used for the GUI for subscripts and Greek letters.
* Fixes for the R1 and R2 GUI analyses for the recently introduced unicode subscript characters. There is now self.label for a pure string version and self.gui_label for the fancier unicode version.
* The [http://www.nmr-relax.com/manual/frq_set.html frq.set user function ] 'id' argument is no longer read only - this was causing test suite failures.
* Removed a nasty kludge for releasing the execution lock on failure. This kludge, after the bug fix for https://gna.org/bugs/?20756, was causing failures in the test suite.
* Changed the 'Execute relax' button in all analyses in the GUI to 'Execute analysis'. It makes no sense to execute relax as relax has been executing during the analysis initialisation and the user setting up all the data for the analysis. This is a remnant of ancient design of {{relax developer link|username=michaelbieri|text=Michael Bieri's }} GUI being a separate program to relax, which would execute relax with the click of this button.
* Restored the Py_INCREF() function call in the relaxation curve-fitting C module. This was deleted at r12632 along with Py_XDECREF() and Py_DECREF() calls. The absence of a Py_INCREF() function call causes the module to crash the Python interpreter under certain conditions. The problem was found in the relax_disp branch.
* Clean up of unused headers and declarations in the exponential curve C module.
* Added unit tests for the lib.mathematics module.
* The relax_fit analysis now uses lib.mathematics.round_to_next_order() for the scaling matrix. This allows the optimised I0 value to be better understandable in the printouts.
* Created the new Value system test class with the first test Value.test_value_copy. This test demonstrates some pretty large bugs in the [http://www.nmr-relax.com/manual/value_copy.html value.copy user function].
* Modified the Value.test_value_copy system test to check the copying of errors as well.
* Added the error flag argument to all of the specific analysis API set_param_values() methods. This will allow parameter errors as well as values to be set.
* The Value.test_value_copy system test now checks all of the values and errors.
* Added the error flag argument to the [http://www.nmr-relax.com/manual/value_set.html value.set user function]. This will allow for parameter errors to be set by the user.
* The specific analysis API _return_value_general() method now returns errors even when values are missing.
* The internal structural object PDF file creation now writes out http://www.nmr-relax.com. Previously the link http://nmr-relax.com was written out.
* Converted all of the specific analysis modules into packages. The model-free and steady-state NOE analyses were already packages, and this now brings all other analyses in line with the package design of specific_analyses. The only change is that the files specific_analyses/x.py have been shifted to specific_analyses/x/__init__.py and the __all__ package variable added.
* Epydoc docstring fixes for the compat module.
* The peak intensity wizard can now function remotely when the spins are not named. This will be needed for the GUI tests to allow the Question() call to be bypassed and still adding the [http://www.nmr-relax.com/manual/spin_name.html spin.name user function ] as the first page of the wizard. The key for spin.name page has also been fixed so that the page can be accessed.
* The timing of individual tests in the relax test suite can now be printed out. The new command line argument --time has been added which, when supplied with one of the test suite arguments, will cause the time required to complete each individual test to be displayed. Instead of just printing the characters '.', 'F', and 'E' for each test, now these characters are postfixed with the time in seconds, the name of the test and ending in a newline character.
* Big speed up of the test suite by skipping a large number of redundant Frame Order system tests. These are tests of using only PCS or only RDC data. These tests are still active for the pseudo-ellipse just to make sure that a whole missing data type can be handled.
* Suppressed the reporting of skipped tests in the test suite if the module is set to None.
* The preview button in the file selection elements of the user function windows can now be disabled. This is via the new wiz_filesel_preview argument being set to False.
* Merged the [http://www.nmr-relax.com/manual/frq_set.html frq.set ] and [http://www.nmr-relax.com/manual/temperature.html temperature ] user functions into the new spectrometer user function class. The [http://www.nmr-relax.com/manual/frq_set.html frq.set user function ] is now called [http://www.nmr-relax.com/manual/spectrometer_frequency.html spectrometer.frequency ] and [http://www.nmr-relax.com/manual/temperature.html temperature ] is now [http://www.nmr-relax.com/manual/spectrometer.temperature. .html spectrometer.temperature.] To match these changes, the cdp.frq variable is now called cdp.spectrometer_frq.* Modified the [http://www.nmr-relax.com/manual/spectrometer_frequency.html spectrometer.frequency user function ] so that a frequency list and count is stored. These are the new cdp.spectrometer_frq_list and cdp.spectrometer_frq_count variables. This will allow various parts of relax which assemble frequency information to be simplified and made more consistent.
* Created basic SVG and PNG graphics for the spectrometer user function class. The spectrometer is black so as not to offend Bruker, Varian, or Jeol users by avoiding a colour from one of these companies.
* The pipe_control.spectrometer.get_frequencies() function can now return MHz or Tesla units.
* Added backwards compatibility support for the spectrometer frequency list and count. This is needed for old relax state files.
* A whitelist is now being used to limit the number of frame order GUI tests to 1.
* Shifted all frequency data handling associated with relaxation data to pipe_control.spectrometer. This includes the deletion of the [http://www.nmr-relax.com/manual/relax_data_frq.html relax_data.frq user function ] as this replicates the behaviour of spectrometer.frequency. A number of functions from the pipe_control.relax_data module have changed: frq() has been deleted as it is replaced by pipe_control.spectrometer.set_frequencies(); frq_checks() has been shifted to pipe_control.spectrometer.frequency_checks(); frq_loop() has been shifted to pipe_control.spectrometer.loop_frequencies(); num_frq() has been deleted as the new variable cdp.spectrometer_frq_count contains this info. Two new functions in the pipe_control.spectrometer module have been added to remove the functionality from pipe_control.relax_data. These are copy_frequencies() and delete_frequencies().* The [http://www.nmr-relax.com/manual/molmol_macro_run.html molmol.macro_run user function ] file argument now has a description.
* Huge speed up of the system tests for the loading and creation of model-free saved states. The OMP files used for the system test have been truncated from 134 to 7 spins, changing the timing of 6 system tests from 11-13 seconds to less than 0.5 seconds each.
* All of the binary file arguments for the user functions now are file selection GUI elements. The GUI user function wizard pages now have file selection buttons for selecting the executable to run. These all have the preview button disabled. The results.read and state.load GUI elements also have the preview button disabled.
* The user function 'prompt' description elements as now displayed in the GUI wizard page.
* The [http://www.nmr-relax.com/manual/monte_carlo_error_analysis.html monte_carlo.error_analysis user function ] can now handle parameters which are lists.
* Added the ability for specific analyses to override the optimisation constraint algorithm. The default is still the 'Method of Multipliers', but if the constraint_algorithm() method returns a different string, then that will be used to select the algorithm. This allows the 'Log Barrier' method in minfx to be used.
* The [http://www.nmr-relax.com/manual/value_display.html value.display ] and [http://www.nmr-relax.com/manual/value_write.html value.write ] user functions can now handle list and dictionary type parameters.
* Added two methods to the specific analysis common API class. These are the _model_type_global() and _model_type_local() methods for always specifying that the model type is global (i.e. at the level of the data pipe) or local (i.e. there can be multiple clusters of models).
* Added some more functions to the lib.statistics module. These include the bucket() function for creating a discrete distribution from a list of floating point numbers, and the gaussian() function for calculating the probability of a point on a Gaussian distribution.
* The spectrum.peak_intensities is now more robust when reading in a generic formatted file. Firstly there is a check that the intensity column number has been supplied. And then there is a checks that all relevant data could be extracted from each row of the file. This replaces traceback errors with RelaxErrors explaining the problem if the user inputs bad data or forgets the intensity column argument.
* Changed the "Execute analysis" button text back to the original "Execute" text of the old relax GUI.
* Added the 'test.seq' file from bug report #20873 ([http://gna.org/bugs/?20873)bug report #20873]. This is from {{relax developer link|username=tlinnet|text=Troels E. Linnet (http://gna.org/users/tlinnet)}}. The bug report and link to http://thread.gmane.org/gmane.science.nmr.relax.user/1452 explains the contents. The file will be used to construct a system test to catch the bug.* Created the Peak_lists.test_bug_20873_peak_lists system test to catch [https://gna.org/bugs/?20873 bug #20873]. This was reported by {{relax developer link|username=tlinnet|text=Troels E. Linnet (http://gna.org/users/tlinnet) at https://gna.org/bugs/?20873}}. The test has been created by copying the user function calls from the original bug report and slightly modifying them to suite a 'relax_fit' analysis type.
* Fix for the Peak_lists.test_bug_20873_peak_lists system test. The spectrum IDs are now strings.
* Added checks of the peak intensities to the Peak_lists.test_bug_20873_peak_lists system test.
* Removed the pipe_control.dipole_pair module as its contents is now in pipe_control.interatomic.
* Removed the dipole_pair module from the pipe_control package __all__ list.
* Merged the [http://www.nmr-relax.com/manual/interatom_create.html interatom.create ] user function into [http://www.nmr-relax.com/manual/interatom_define.html interatom.define]. These user functions had overlapping functionality which would be confusing for a user.
* Added polish to all of the interatom user function docstrings.
* Improved the functionality of the [http://www.nmr-relax.com/manual/interatom_read_dist.html interatom.read_dist user function]. The file data is now stripped using lib.io.strip to remove comments and blank lines. And now if the iteratomic data container cannot be found, it is created instead of raising a RelaxError.
* Improvements to the RelaxZeroVectorWarning - the warning message was terribly out of date.
* Polish for the [http://www.nmr-relax.com/manual/rdc_read.html rdc.read user function]. Comment lines and blank lines are now removed to suppress useless warning messages about these lines containing no valid data.
* Added some basic initial relax icons for J couplings.
* Created some basic initial GUI wizard graphics for J couplings.
* Modified the titles of all the auto-analysis GUI elements. The text 'Setup for' has been removed as it is meaningless.
* Added more emphasis on the titles of the auto-analysis GUI elements. There is now more space below the title, and a different font (16pt roman italic) is being used.
* Removed some now irrelevant information from the [http://www.nmr-relax.com/manual/rdc_read.html rdc.read user function ] docstring.* Removed a false prompt example from the [http://www.nmr-relax.com/manual/rdc_read.html rdc.read user function ] docstring.
* Created an entire new user function class for handling J couplings in the relax data store. This derives from the RDC user function modules. The following functions have been created: j_coupling.copy, j_coupling.delete, j_coupling.display, j_coupling.read, and j_coupling.write.
* Added a check for the RDC data type to the [http://www.nmr-relax.com/manual/rdc_read.html rdc.read user function].* The [http://www.nmr-relax.com/manual/rdc_read.html rdc.read user function ] can now handle T = J+D type data. Support for this in the specific analyses is yet to be added.* Fixed for the [http://www.nmr-relax.com/manual/rdc_read.html rdc.read], [http://www.nmr-relax.com/manual/j_coupling_read.html j_coupling.read ] and [http://www.nmr-relax.com/manual/interatomic_read_dist.html interatomic.read_dist ] user functions. Comment lines are no longer removed, as it is impossible to tell a comment line from a spin ID string.
* Split up the specific_analyses.n_state_model package into modules. The new data and parameter modules have been created by shifting out method from the __init__ module and converting them into functions of the two new modules. This is to simplify the package.
* Shifted another method from the N_state_model class to the specific_analyses.n_state_model.data module.
* More cleanups of unused imports throughout relax.
* Fixes and expansion of the test_suite.unit_tests._lib package __all__ list.
* Fixes and improvements to {{relax developer link|username=varioustoxins|text=Gary Thompson's }} unit_test_runner.py script. The printouts have been improved and the script can now handle more than 3 levels of directories for a package.
* The unit_test_runner.py script now defaults to verbose mode.
* More cleanups of the unit_test_runner.py script.
* Shifted the user function initalisation. This is from the import of the user_functions package to the package initialise() function. This is for saner importing dependencies in the relax sources.
* The lib.io.open_write_file() function now catches file names of None and raises a RelaxError. This is useful for the GUI if the user forgets to select a file name.
* The [http://www.nmr-relax.com/manual/rdc_corr_plot.html rdc.corr_plot user function ] can now handled T=J+D type data.
* The N-state model analysis can now handle RDC data of mixed D and T=J+D.
* Added support for mixed RDC data types per alignment. This is to allow, for example, one bond RDC values of the 'D' data type and two bond RDC values of the T = J+D data type to be loaded for the same alignment ID. This is now handled in the N-state or ensemble analysis by handling a different RDC data type per RDC value.
* Converted all of the relaxation curve-fitting chapter of the user manual to the lstlisting environment. This is for all parts of the script UI section of the chapter.
* Converted all of the model-free chapter of the user manual to the lstlisting environment. This is for all parts of the script UI section of the chapter.
* Converted all of the J(w&omega;) mapping chapter of the user manual to the lstlisting environment. This is for all parts of the script UI section of the chapter.
* Converted all of the Consistency testing chapter of the user manual to the lstlisting environment. This is for all parts of the script UI section of the chapter.
* Created a new listings language definition for relax for the user manual. This is for better highlighting of relax scripts and code in the relax manual.
* Fixed some out of date script code for the relaxation curve-fitting chapter of the user manual.
* Added a section label to the relaxation curve-fitting chapter of the user manual.
* Adding a test data file in NMRPipe SeriesTab format. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - Support for NMRPipe seriesTab format *.ser]. A file in NMRPipe SeriesTab format is added to the test-suite for further development.* Test function for NMRPipe SeriesTab format implemented. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - Support for NMRPipe seriesTab format *.ser]. An assertEqual test is implemented for the reading of NMRPipe SeriesTab format. The standalone call is: relax -s Peak_lists.test_read_peak_list_NMRPipe_seriesTab.* Adding a NMRPipe function file in the folder lib\software\nmrpipe.py. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - Support for NMRPipe seriesTab format *.ser]. Initial file for: lib\software\nmrpipe.py. This file will hold the function calls handling NMRPipe SeriesTab format.* Fix for commit (http://article.gmane.org/gmane.science.nmr.relax.scm/18004). The spin naming was wrong. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - Support for NMRPipe seriesTab format *.ser]. 'spin_id' keywords should be supplied different. Ex: spin.name(name='NE1', spin_id=':62').* Autodetect format implemented for NMRPipe SeriesTab format implemented. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - Support for NMRPipe seriesTab format *.ser]. The file is determined a NMRPipe SeriesTab if the first two words of the first line is: REMARK SeriesTab.
* Update of the rotation matrix example in the intro chapter of the user manual. The function is now in lib.geometry.rotations.euler_to_R_zyz(). The example has also been converted to the lstlisting environment for better formatting.
* The relax prompt strings and help system are now keywords for the relax listings package definition. The prompt strings "relax>" and "relax|" are now recognised as keywords and are coloured blue. The help system has been added as a normal Python keyword for highlighting.
* Converted all relax prompt examples in the intro chapter of the manual to the lstlisting environment. This is simply for a more colourful representation.
* The prompt examples in the user function chapter of the manual now use the listing environment. This is via the fetch_docstrings.py script and results in much better formatting of these subsections.
* Added function destination for auto-detected NMRPipe SeriesTab format. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - Support for NMRPipe seriesTab format *.ser]. Auto-detected NMRPipe SeriesTab format make function calls to the file: lib\software\nmrpipe.py in function nmrpipe.read_list_intensity_seriestab().* Imported the missing lib.software.nmrpipe module into pipe_control.spectrum. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - Support for NMRPipe seriesTab format *.ser]. Expected modules for use in lib\software\nmrpipe.py is imported.
* Release checklist minfx and bmrblib version update to the newest versions.
* Spacing fix in an import statement (found using the 2to3 conversion program).
* Added the relax wiki backup script for dumping the MySQL database contents locally. This is from http://article.gmane.org/gmane.science.nmr.relax.devel/4163.
* Added the script from {{relax developer link|username=tlinnet|text=Troels Linnet }} for backing up the relax wiki via FTP. This is from the post http://article.gmane.org/gmane.science.nmr.relax.devel/4168.* Added a link to {{relax developer link|username=tlinnet|text=Troels' }} post to the relax-devel mailing list to the relax wiki FTP backup script. The link is http://article.gmane.org/gmane.science.nmr.relax.devel/4168
* The relax info printout now works in the absence of the bmrblib module.
* Added some Oxygen icons for a boolean GUI input element. The media-record-relax-green.png files are the media-record.png files with the hue set to 117.
* Created a boolean input element for the auto-analyses of the GUI. This simply turns on and off.
* The boolean GUI auto-analysis input element now has a SetValue() method.
* Completed NMRPipe SeriesTab reader. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser]. Completed NMRPipe SeriesTab reader for assignment according to SPARKY format. Changes implemented according to: http://article.gmane.org/gmane.science.nmr.relax.devel/4120.* Extraction of NMRPipe SeriesTab changed. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser]. The Extraction of NMRPipe SeriesTab data is changed in pipe_control/spectrum.py in the read() function.* Added flag for single or multiple extraction of spectrum. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Flag change added to reading of NMRPipe SeriesTab. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].
* Some small edits to the intro chapter of the relax user manual.
* Many improvements to the indexing in the relax user manual.
* Removed the flag for single_spectrum. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Fixed wrong reference to Sparky format. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Modfied the intensity list to handle intensities for all spectra per spin. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Fixed the extraction of NMRPipe seriestab data in pipe_control.spectrum.read(). Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Fix for handling reading spin of type heteronuc='NE1' and proton='HE1'. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Adding NMR seriesTab data file for a multiple column / multiple spectrum formatted file. This file is from https://gna.org/support/download.php?file_id=18618 attached to the support request https://gna.org/support/?3043 by {{relax developer link|username=tlinnet|text=Troels Linnet}}. This is if the command "seriesTab -in ../../peaks.dat -out seriesTab_multi.ser -list nmrfiles.list -sum -dx 1 -dy 1" where nmrfiles.list contains file reference to 10 .ft2 files.* Fix for unit test of nmrpipe. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Replacing a pointer-reference structure to an empty creation of list of lists. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* The ID of spins in seriesTab_multi.ser was not formatted correctly to SPARKY format. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Added system test for reading of a multi column formatted NMRPipe seriesTab file. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser]. Generated the reference data in Excel, for the system test. The spectrum ID's are auto generated by supplying the keyword spectrum_id='auto'. The first few tests was matched against integers rather than floats. Adding '.0' to the end of each number. Spaces added after the commas in the self.assertAlmostEqual() calls. The 2to3 conversion program (for Python 2 to Python 3 conversion) highlights this issue.* Added check for number of supplied spectra ID's and the number of returned intensity columns. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Made it possible to autogenerate spectrum ID's, if spectrum_id='auto'. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Remove from datalist where empty list starts. These are created where spins are skipped for ID = '?-?'. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Moved checks for matching length of spectrum IDs and intensities columns. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Moved the adding function of adding the spectrum id (and ncproc) to the relax data store. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser]. Shifting it to later will prevent the cdp.spectrum_ids list to be populated after the user calls the user function incorrectly.* Added epydoc documentation in pipe_controlspectrum.read() when supplying keyword 'auto'. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Added GUI description for when supplying 'auto' to the spectrum_id. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Added a stub GUI describtion in the File formats, for NMRPipe seriesTab. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser].* Fix for two spaces are used after a period in documentation. Progress sr #3043: ([https://gna.org/support/?3043) sr #3043 - support for NMRPipe seriesTab format *.ser]. relax uses the double space for easier for the eyes to pick up the sentence structure.
* The relax user manual is now broken into parts. The higher level LaTeX part command is now used to group related chapters. This should make it easier for users to navigate this huge thing.
* Creation of the optimisation chapter of the relax user manual. The main text of this chapter originates as part of the model-free chapter. As this most of this text was not model-free specific, it has been spun out as its own chapter. Text has also been taken from the "Optimisation of relaxation data – values, gradients, and Hessians" chapter. The indexing for the optimisation topics has also been improved.
* Changed the chapter layout of the relax user manual. The development chapter has been moved forwards.
* Fix for the [http://www.nmr-relax.com/manual/spectrum_read_intensities.html spectrum.read_intensities user function ] docstring. Grammatically, the text "spectrum ID's" should be "spectrum IDs". The problem though was that this text was strangely causing the user manual compilation to fail.
* Added subsubindexing for the optimisation algorithm index entries.
* Added extensive cross-referencing to the index of the relax user manual.
<section end=changes/>
=== Bugfixes ===
<section begin=bugfixes/>
* Fix for bug #20674 ([https://gna.org/bugs/?20674) bug #20674 - the failure of the consistency testing analysis]. This was reported by Mengjun Xue <mengjun dott xue att mailbox dott tu-berlin dot de>. The problem was that the first residue did not have a single proton 'H' in the PDB file, and therefore the dipolar relaxation interaction was not set up. The overfit_deselect() method of the consistency testing specific API was not checking for this. The method is now much more like that of the model-free specific analysis.
* Fix for the model-free analysis specific overfit_deselect() method. The tests for the presence of dipolar relaxation was not correct and was non-functional.
* Fix for the J(w&omega;) mapping analysis matching that for the consistency testing. The overfit_deselect() method is now identical to that of the consistency testing analysis.* Fix for bug #20683 ([https://gna.org/bugs/?20683) bug #20683 - the infinite and NaN data in Bruker DC files]. This was reported by Mengjun Xue <mengjun dott xue att mailbox dott tu-berlin dot de>. The model-free specific overfit_deselect() method now checks for infinite relaxation data and deselects the spin if such data is encountered.
* Fix for the analysis specific API common method _data_init_spin(). The data types are now correctly checked - they are not strings but types.
* Fix for the relaxation curve-fitting _assemble_scaling_matrix() method. The intensity scaling was never activated before due to a lower vs. uppercase parameter name mismatch. This scaling is now correctly set up as the previous code assumed cdp.relax_times was a list whereas it has been a dictionary since the early 1.3 releases.
* Restored the default behaviour of the spin_loop(). The skip_desel flag is now functional and defaults to False.
* Fix for the relax_times and intensities parameter definitions for specific_analyses.relax_fit. These are dictionaries, not lists.
* Fix for the [http://www.nmr-relax.com/manual/spectrum_error_analysis.html spectrum.error_analysis user function ] for replicated spectra and subsets. A second call to spectrum.error_analysis was removing the results from the first call. This is now avoided.
* Bug fix for the right click popup menu in the spectra list GUI element. This affects the NOE, R1, and R2 analyses. The actions of the menu items were all mixed up.
* Fix for the nasty bug #20756 ([https://gna.org/bugs/?20756)bug #20756]. The problem was that the global execution lock was not always released by a relax script when certain errors are raised during the script execution. This does not occur for all types of error though. Now the release of the lock has been shifted into the 'finally' statement to absolutely force lock release.
* Big bug fix for a memory leak in the relaxation curve-fitting C module. Proper reference counting is used for the temporary 'element' Python objects used in the conversion between Python and C objects. The use of the Py_CLEAR() macro removes the memory leak. However the number of references as seen by sys.gettotalrefcount() in a debugging Python version keeps rising and might be a problem in the future.
* Big bug fix for the [http://www.nmr-relax.com/manual/value_copy.html value.copy user function ] - it is now functional again.* Bug fix for the [http://www.nmr-relax.com/manual/value_copy.html value.copy user function]. The user function can now handle parameter errors, and the values are set in the correct data pipe.* Bug fix for an incorrect print statement in the N_state_model.test_paramag_centre_fit system test. This is in the script, and was uncovered using WinPython by {{relax developer link|username=tlinnet|text=Troels E. Linnet (http://gna.org/users/tlinnet) }} via the relax system tests at http://thread.gmane.org/gmane.science.nmr.relax.devel/3863. The Python bug was detailed at http://thread.gmane.org/gmane.science.nmr.relax.devel/3863/focus=3867.* Fix for the package checking as part of the unit tests. This was identified from the bug report #20820 ([https://gna.org/bugs/?20820) bug report #20820] submitted by {{relax developer link|username=tlinnet|text=Troels E. Linnet (https://gna.org/users/tlinnet)}}. The problem was that on some systems, the full path is required for checking the presence of the directories which are the sub-packages of the main package being checked. The result was that checking for the package in the __all__ list was skipped. Note that this change does not fix the bug reported.
* Fixes for the Jw.test_calc system test - the spectral density value comparison is now significant.
* Bug fix for the pipe_control.spectrometer.get_frequencies() function. The units argument was incorrectly referenced.
* Fix for bug #20820 ([https://gna.org/bugs/?20820)bug #20820]. Solution found - 'software' was not mentioned in __init__.py, and failed at import.* Partial fix for bug #20873 ([https://gna.org/bugs/?20873)bug #20873]. The spectrum_id argument for the [http://www.nmr-relax.com/manual/spectrum_read_intensities.html spectrum.read_intensities user function ] can now be both a string and a list of strings.* Fix for bug #20873 ([http://gna.org/bugs/?20873)bug #20873]. This was reported by {{relax developer link|username=tlinnet|text=Troels E. Linnet (http://gna.org/users/tlinnet)}}. The ability to load multiple peak intensities from a single generic formatted file has been correctly implemented. This involves added checks to make sure that the user supplies reasonable arguments and to then loop over the intensity column argument.
* Python 3 fixes via the 2to3 program.
* Bug fix for the [http://www.nmr-relax.com/manual/value_write.html value.write user function ] for list or dictionary type data. This is for the case where the variable of one spin is set to None rather than a list or dictionary type.* Bug fix for the Sequence GUI input element. This complete the removal of bug #20873 ([https://gna.org/bugs/?20873)bug #20873]. The problem was that the gui_to_str() function was not failing to convert the string into a string list, so the list was deemed as a single string. Now the first character of '[' or '(' for lists or tuples are now searched for instead of relying on the conversion to trigger an error.* Fixes for the [http://www.nmr-relax.com/manual/value_write.html value.write user function ] for simple parameter values of None. This is a recently introduced bug which causes a complete failure of the user function is the parameter for any spin is None.* Fix for bug #20888 ([https://gna.org/bugs/?20888)bug #20888, the autoscaling of Grace graphs]. This solution was mentioned in the post at http://thread.gmane.org/gmane.science.nmr.relax.devel/3920/focus=3930. Instead of using minimum and maximum values for the axes in the Grace graphs produced by the lib.software.grace module, which was the old solution for having the graphs scaled to reasonable values, instead the '@autoscale' command is appended to the end of all graphs. This is performed by the write_xy_data() function.* Bug fix for the running of the test suite in the relax GUI. The fix of r19727 was extended to apply to the GUI as well. Too many arguments were being sent into TextTestRunner Python class on certain Python versions (3.1 and <= &le; 2.6).* Big bug fix - the relax execution lock now truly supports nesting. This fixes bug #20891 ([https://gna.org/bugs/?20891) bug #20891] reported by {{relax developer link|username=tlinnet|text=Troels Linnet (https://gna.org/users/tlinnet)}}. Scripts can now be executed from the GUI. Note that this is a very dangerous fix.* Completed the fix for bug #20889 ([https://gna.org/bugs/?20889)bug #20889]. The problem was that the [http://www.nmr-relax.com/manual/spectrum_read_intensities.html spectrum.read_intensities user function ] was incorrectly updating the cdp.spectrum_ids list when the spectrum_id argument is set to a list. The list of IDs was being set as a single element of cdp.spectrum_ids, causing problems with the GUI when updating the ComboBox choices and then subsequent setting of the spectrum IDs. This bug and fix is independent of the relax_disp branch, despite being uncovered there and being caught by the Relax_disp.test_bug_20889_multi_col_peak_list GUI test in that branch.* Bug fix for the GUI element for the [http://www.nmr-relax.com/manual/interatom_define.html interatom.define user function]. The special spin ID GUI elements can not be set to the get_spin_ids() function as then SetValue can no longer work for IDs not in the list.
* Fixes for the TestCase class names for a number of lib package modules. As the test class name was incorrect, previously the test suite was skipping these silently. This was dangerous.
* Fixes for the unit tests of the lib.selection module. The contains_*() methods now should be used. And the test_Selection_ful_spin_id() unit test has been completely deleted as this way of checking the selection object is no longer valid.
* Fix for bug #20910 ([https://gna.org/bugs/?20910) bug #20910 - the broken grace.write GUI interface]. The problem was that the Value GUI input element was not detecting list-type data returned by the wiz_combo_iter method.* Fix for bug #20915, [ (https://gna.org/bugs/?20915) bug #2091 - Failure of Grace opening in MS Windows ]. {{relax developer link|username=tlinnet|text=Troels E. Linnet }} provided this patch, and was discovered during work on a Windows 7 system: telinnet aaattt bio_dot_ku_dot_dk. This is a small fix for a wrong call to "raise RelaxMissingBinaryError(binary)", when issuing an external call to xmgrace. The "path_sep" would be equal = [\/], and the RE search would not find(True) the full path specified for the xmgrace file. This is now shifted to python: os.path.isfile http://docs.python.org/2/library/os.path.html. Another fix, is that as a standard the command "xmgrace" is provided. This will work fine through windows cmd, but the true name for program in windows is "xmgrace.exe", and so an additional search for +".exe" is also performed.
* Fix for the N_state_model.test_absolute_T system test for Mac OS X. The precision of the check needed to be decreased.
* Fix for bug #20918 ([https://gna.org/bugs/?20918)bug #20918, the hanging of the data pipe editor]. This was reported by {{relax developer link|username=tlinnet|text=Troels Linnet (https://gna.org/users/tlinnet) }} and is an MS Windows only problem. The problem is in the wxMSW part of wxPython, and it may be fixed in newer wxPython versions. The issue is nevertheless now avoided by calling the GUI user function store objects with the arguments wx_wizard_sync=True and wx_wizard_modal=True. This appears to solve the problem.
* Decreased the precision of the check in the Frame_order.test_rigid_data_to_rigid_model system test. This is to allow the test to pass on a MS Windows 7 test machine.
* More MS Windows fixes, this time a nasty kludge, for the relax system tests. This is strangely needed for the relax_disp branch and not the trunk for a 64-bit MS Windows 7 test system. The reason why this WindowsError is triggered by the base tearDown() method in the relax_disp branch and not trunk is a total mystery. Actually why Windows refuses to complete the file close() operations of the [http://www.nmr-relax.com/manual/results_write.html results.write ] and [http://www.nmr-relax.com/manual/state_save.html state.save ] user functions before calling the tearDown() method is the greater mystery.* Bug fix for the batch file permissions for executing Art Palmer's [[Modelfree4 ]] program. This was identified in the post http://thread.gmane.org/gmane.science.nmr.relax.devel/3953/focus=4000. The file was set to be executable, but on Unix systems it would end up with the permissions "---x------".
* Small comment fix in the sample_scripts/consistency_tests.py script.
* Fix for the scons fetch_docstrings target. The user functions need to be explicitly initialised in the fetch_docstrings script as this is not running through relax.
* Fix for bug #20921 ([https://gna.org/bugs/?20921)bug #20921, the GUI tests freezing in MS Windows]. The problem was that the dipolar interaction wizard in the model-free auto-analysis GUI element was calling its user functions asynchronously. This can lead to racing conditions. The commit r80084 (http://article.gmane.org/gmane.science.nmr.relax.scm/17840) somehow randomly triggers this racing on MS Windows systems only together with the Mf.test_mf_auto_analysis GUI test. Now all user functions are called synchronously.
* Fix for the relax GUI splash screen. On certain systems, the GUI was failing due to the splash screen. It is now shown after the main wxPython window has been created.
* Fix for the new analysis wizard when running the GUI tests. If the create_button() method is called without a function argument, the wizard is still created. This is triggered in the relax_disp branch on certain systems.
* Fix for the relax version file for the relax user manual construction. This was causing 'scons user_manual_pdf' and related targets to fail when a local git repository is used (via git-svn).
* Bug fix for the page numbers in the index - these were often out by a few pages. The makeindex command was being run too early in the repetitive LaTeX compilation chain, causing the page numbers to be incorrect. It is now run twice to fix the problem.
* Fix for the [http://www.nmr-relax.com/manual/spectrum_read_intensities.html spectrum.read_intensities user function ] in the GUI. The menu string was truncated to spectrum.read.
* Python 3 fix for the lib.software.nmrpipe.read_list_intensity_seriestab() function. The inbuilt Python filter() function does not return a list in Python 3, as previously, but rather a filter object. Therefore a call to list() is required to properly convert the data.
* An attempt at better handling MS Windows not releasing the file handle on time in the test suite. The system and unit tests tearDown() method should now be resilient to the strange MS Windows behaviour of not releasing the relax state files. The tearDown() method should now complete even when this error occurs. A delay of 3 seconds has been added when the WindowsError occurs to give the OS some time before attempting to delete the file again. If this fails, then the file deletion operation is skipped.
<section end=bugfixes/>
== Links == <section begin=links/>For reference, the following links are also part of the announcement for this release:* [http://wiki.nmr-relax.com/Relax_3.0.0 Official release notes]* {{gna link|url=gna.org/forum/forum.php?forum_id=2407|text=Gna! news item}}* [http://article.gmane.org/gmane.science.nmr.relax.announce/43 Gmane]* [https://mail.gna.org/public/relax-announce/2013-08/msg00000.html Local archives]* [http://marc.info/?l=relax-announce&m=137591513813601&w=2 MARC]<section end=links/> == Announcements ==
{{:relax release announcements}}
== See also ==
* [http://www.nmr-relax.com/api/3.0/ The relax 3.0 API documentation]{{:relax release see also}}[[Category:Release_Notesrelax library]]
Trusted, Bureaucrats
4,223

edits