Open main menu

Changes

Relax 2.0.0

7,486 bytes added, 11:45, 14 October 2020
m
→‎Links: Fix the broken Gna! forum link by switching to {{gna link}}.
{{lowercase title}}
{{infobox relax release| version = Description 2.0.0| prev =1.3.16| next = 2.1.0| keywords = Analyses, BMRB, Bruker Dynamics Centre, GUI, help system, UI, user functions| type = Major feature| date = 12 June 2012| manual = yes}}
== Description == <section begin=description/>This is the first relax version of the new 2.0 line. Due to incredible number of changes to the core and large improvements visible throughout prompt and graphical user interfaces (UIs), it was decided that a brand new development line would be created. The 1.3 line will now be discontinued as it quite old - it came into existence 6 years ago (see https://mail.{{gna.org/public/mailing list url|relax-devel/2006-10/msg00053.html)}}.
The features of these release include a complete restructuring of the user functions so that special 'definitions' are used to automatically create the user function front ends in all UIs. This now means that all user functions are now accessible from the GUI. The help system in the prompt UI mode has been revamped and is now better formatted (with better line wrapping for MS Windows). The core of the specific analysis API has been redesigned to make it much easier for NMR spectroscopists to add their own analysis types to relax. The GUI test suite has been significantly expanded so that the GUI should now be, and remain, robust. The XML formatted relax results and save files have been redesigned and improved for both numerical accuracy and readability. Data pipes can now be grouped together in special data bundles, and analysis tabs in the GUI are now associated with a specific bundle. BMRB export (as well as import) and support for Bruker Dynamics Centre relaxation data files are now tightly integrated into the GUI. Many other improvements can be found throughout the GUI. The incredible number of changes that have gone into this release can be seen below!
As this is the first release of a new line, a few minor bugs should be expected. All feedback is appreciated. Bugs can be reported at the official relax bug tracker through the link https://{{gna url|1=gna.org/bugs/?func=additem&group=relax}}. Any error messages that are not 'RelaxErrors', any strange behaviour in the GUI such as windows disappearing out the back, elements not updating, etc., or anything that does not behave exactly as you would expect should be treated as a bug!<section end=description/>
== Download ==
<section begin= Download =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).
<section end=download/>
== CHANGES file ==
<section begin= CHANGES file =metadata/>Version 2.0.0<br/>(12 June 2012, from /trunk)<br/>
http://svn.gna.org/svn/relax/tags/2.0.0
<section end=metadata/>
=== Features ===
<section begin=features/>
* A complete restructuring of the user functions - all user functions are automatically generated within all user interfaces (UIs) including the prompt and script UI, and the graphical UI (GUI).
* The user functions now have special definitions in the 'user_functions' directory making it very simple to add or modify user functions.
* Big improvements to the help system in the prompt UI mode. This is now automatically generated when accessed by the user. Bold font is now used for section titles and keyword arguments, the user function class documentation has been expanded and is now related to the functionality, the user function representation printout is cleaner, and the text is now wrapped for better display on all operating systems.
* Automatic creation of the [http://www.nmr-relax.com/manual/Alphabetical_listing_user_functions.html| Alphabetical listing of user functions] chapter of the relax manual from the user function definitions.
* The analysis specific API of the specific_fns directory has been redesigned to extensively use the parameter list objects. Many API base methods will now automatically work with the parameter list object, removing the need for a analysis specific implementation.
* The GUI test suite has been significantly expanded. The system test relax scripts can now be used as GUI tests - the user functions are executed through the self._execute_uf() method which allows execution within all UIs, testing out the different code paths.
* The XML formatted results and save files has been redesigned (it has improved, is more accurate, is easier to read in Python version 2.7.3 and above, and contains more metadata) and is now at version 2.
* The printouts of spin specific data has improved with the addition of an automatic column width algorithm.
* The addition of a new concept called data pipe bundles - related data pipes can now be grouped together into bundles. For example in the dauvergne_protocol model-free auto-analysis[d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b], all internally generated data pipes are grouped together in the same bundle.
* Each GUI analysis tab is now associated with a unique data pipe bundle rather than a dedicated data pipe. This allows for better data pipe handling.
* Improved BMRB support. The 'File->Export for BMRB deposition' menu has been added to the GUI which opens a special BMRB export window.
* The model-free GUI analysis tab now has a 'View metadata' button for opening a window displaying all metadata associated with the relaxation data.
* The model-free GUI analysis tab now has a button for loading relaxation data from Bruker Dynamics Centre files.
<section end=features/>
=== Changes ===
<section begin=changes/>
* Spun out the automatic column width formatting code from relax_io.write_spin_data() to write_data().
* Used some colour for the relax GUI terminating print out asking for citations.
* Added checks to the BMRB export to make sure all necessary data has been input. If not, then the Missing_data dialog will be presented to the user to explain what is required.
* The Missing_data dialog can now have the parent wx element specified. This is needed when launched from a child window such as the BMRB export window.
* Improved the robustness of the [http://www.nmr-relax.com/manual/bmrb_write.html bmrb.write user function ] for missing data - this is in the generic_fns.diffusion_tensor.bmrb_write() function, and is for missing atomic information required for the Tensor_list saveframe.* The [http://www.nmr-relax.com/manual/bmrb_read.html bmrb.read user function ] is now reading in all of the relaxation data metadata into the data store.* Improved the robustness of the [http://www.nmr-relax.com/manual/bmrb_write.html bmrb.write user function ] for missing data - this is in the generic_fns.relax_data.bmrb_write() function, and is for missing atomic information related to relaxation data.* The [http://www.nmr-relax.com/manual/bmrb_read.html bmrb.read user function ] is now extracting the thiol state of the molecule.
* BMRB improvements - the molecule type is now read from the entity record and stored in relax.
* Added more display tests for the BMRB system test script.
* BMRB output improvements - deselected spins are no longer skipped and the model-free BMRB output is also more robust to missing data.
* More extensive testing of the bmrb user functions.
* Added a call to the [http://www.nmr-relax.com/manual/bmrb_display.html bmrb.display user function ] in the bmrb_rw.py test suite script.
* Shifted the GUI user function page _format_table() and _table_line() methods into the misc module. These are now the gui.misc.format_table() and gui.misc.table_line() functions, allowing the code to be used in other parts of the GUI.
* Decreased the size of all the GUI auto-analysis wizards to fit in a 1024x768 screen.
* Created a small molecule wizard graphic for the [http://www.nmr-relax.com/manual/structure_read_xyz.html structure.read_xyz user function].
* Refinement of all of the GUI user function wizard sizes.
* The default GUI user function description minimum height has been increased to 300 px - removing a lot of scrolled descriptions automatically.
* Increased the default size of the GUI user functions.
* Spacing and layout improvements for the GUI user function descriptions.
* The dauvergne_protocol sample script [d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b] initial pipe name has been modified to include the pipe bundle.
* The GUI now sends the pipe bundle name into the relax_fit and noe auto-analyses.
* The relax_fit and noe auto-analyses now centre around the pipe bundle rather than data pipe name.
* Added a set of roman fonts to the gui.fonts module - this will be used by the about dialogs.
* Font size improvements for Mac OS X - the fonts are now roughly the same size as on GNU/Linux and MS Windows. An operating system specific font scaling is now used, with the Mac OS X fonts each being increased by 2 pixels.
* The dauvergne_protocol auto-analysis [d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b] now adds the pipe bundle name to all created pipes as a suffix. This is to uniquely identify the data pipes, and to allow more than one model-free analysis to be executed per relax instance (useful for the GUI).
* The analysis wizard now suggests the starting data pipe to be named 'origin - ' + pipe_bundle - this allows unique data pipe names for each analysis.
* Temporarily disabled the Mac OS X task bar icon as it is currently horribly broken in wxPython 2.8 and 2.9.
* Updated the relaxGUI splash screen copyright notice.
* Improved the button size and spacing in the list GUI elements.
* The [http://www.nmr-relax.com/manual/bmrb_write.html bmrb.write user function ] now adds the file to the cdp.result_files list and notifies observers.
* Converted all of the list GUI element 'stretch' args to 'proportion' - instead of a flag, this is now the direct window proportion parameter used in the wx.Sizer.Add() methods. This has been changed in the BMRB export window so that the central molecule list GUI element is half the size of the others.
* Created the BMRB export window - this includes the following elements: A title with description and BMRB icons; the data pipe selection element; the relaxation data meta data GUI element; the molecule list GUI element; the software list GUI element; the script list GUI element; the citation list GUI element; buttons for previewing, exporting, and cancelling.
* More improvements for the bmrb user function definitions.
* The GUI user function objects can now be called with the wx_wizard_sync and wx_wizard_modal args. This is used to force the user function to operate synchronous or asynchronous mode, or to force the user function wizard to be modal. This will allow a number of hacks to be avoided throughout the GUI.
* Added a check to the [http://www.nmr-relax.com/manual/bmrb_write.html bmrb.write user function ] to see if the file name has been supplied. This results in a nicer message for the GUI.* The [http://www.nmr-relax.com/manual/bmrb_display.html bmrb.display ] and [http://www.nmr-relax.com/manual/bmrb_write.html bmrb.write ] user functions now have the version defaulting to 3.1. The choices are now also restricted to 2.1, 3.0, and 3.1.
* The user function wizard pages now have an on_back() method which unregisters the observer. This is needed as going back previously did not unregister the observer the object, hence going forwards after going back would fail.
* The wizard now has an on_back() method available to perform actions when going back. The on_next() method has been fixed in that it is called even when the page is skipped.
* Activated the apply and skip buttons in the relaxation data GUI element data reading wizards.
* The relaxation data 'Add' and Bruker 'Add' buttons now launch wizards whereby the first page is the original [http://www.nmr-relax.com/manual/relax_data_read.html relax_data.read ] or [http://www.nmr-relax.com/manual/bruker_read.html bruker.read ] user functions, but then this is followed by the [http://www.nmr-relax.com/manual/relax_data_peak_intensity_type.html relax_data.peak_intensity_type], [http://www.nmr-relax.com/manual/relax_data_temp_calibration.html relax_data.temp_calibration ] and [http://www.nmr-relax.com/manual/relax_data_temp_control.html relax_data.temp_control ] user functions. This allows the metadata to be set up prior to the model-free calculations.* The [http://www.nmr-relax.com/manual/relax_data_delete.html relax_data.delete user function ] now removes all of the metadata associated with the ID.
* Changes to the relaxation data GUI element button layout. The buttons are now all of the same width, and the metadata button is now last.
* The relaxation data GUI element now has a button for opening the relaxation data metadata element. This 'View metadata' button will launch the new Metadata_window wx.Frame. This window contains the relaxation data metadata GUI element stretched to fit the window.
* The relaxation data metadata list GUI element now can stretch to fill the parent, if asked. This will be used when the list is embedded within a window by itself.
* Created a GUI element for displaying and editing the relaxation data metadata. This is very similar to the relaxation data list GUI element, and it will be used in the BMRB export.
* Refinement of the [http://www.nmr-relax.com/manual/relax_data_peak_intensity_type.html relax_data.peak_intensity_type user function ] definition.* Big expansion and improvements of the [http://www.nmr-relax.com/manual/relax_data_temp_control.html relax_data.temp_control user function ] definition. There are also a few edits of the relax_data.temp_calibration definition.
* Created a 200x200 pixel version of the status.weather-clear Oxygen icon. This is for the relax_data.temp_calibration and relax_data.temp_control user function wizards.
* Big expansion and improvements of the [http://www.nmr-relax.com/manual/relax_data_temp_calibration.html relax_data.temp_calibration user function ] definition.
* Improvements for the Force_true object for the 'force flag' user function argument types. This invisible GUI element can now have its value set. The SetValue() method will internally store the value, and GetValue() will then return this value. The initial value is True. This allows the BMRB GUI tests to pass again.
* The [http://www.nmr-relax.com/manual/spin_name.html spin.name ] and [http://www.nmr-relax.com/manual/spin_element.html spin.element ] user functions in the BMRB system and GUI tests now use the force flag set to False. This is to try to replicate the old behaviour of the test and to allow it to pass again.
* The BMRB icons now also have transparent backgrounds.
* Made the background of the BMRB wizard graphic transparent - this just looks better.
* Added accelerator keys for all of the spin viewer window tree pop up menus.
* Large expansion of the pop up menu for the relaxation data list GUI element. This now includes most of the relax_data user functions.
* Implemented the [http://www.nmr-relax.com/manual/relax_data_frq.html relax_data.frq ] and [http://www.nmr-relax.com/manual/relax_data_type.html relax_data.type ] user function definitions and backends.* Created the Relax_data.test_reset() system test for testing [http://www.nmr-relax.com/manual/relax_data_frq.html relax_data.frq ] and [http://www.nmr-relax.com/manual/relax_data_type.html relax_data.type].
* Big reworking of the spin viewer window tree element. Many new pop up menu entries have been added covering almost all of the molecule, residue, and spin user functions. The methods bound to the pop up menu entries have all been renamed to 'action_'+type+'_'+user function name. And the residue and spin changes checking has been fixed to include checks for the naming and numbering.
* Set the force flag args for a few spin and residue user functions to the 'force flag' arg type.
* The [http://www.nmr-relax.com/manual/molecule_name.html molecule.name ] and [http://www.nmr-relax.com/manual/molecule_type.html molecule.type ] user function force args are now of the 'force flag' arg type. This hides the arg in the GUI.
* Added support for the user function arg type 'force flag' to the GUI user functions. This arg type will, in the GUI, always return True. This is because a user clicking on 'Ok' or 'Apply' is essentially saying that this operation should be performed. The special Force_true class was created for these arguments which simply ignores SetValue() calls and always returns True from GetValue() calls.
* Formatting fixes for the [http://www.nmr-relax.com/manual/molecule_create.html molecule.create user function ] definition.
* The relax save and results XML files now include subversion details in the <relax> tag. This indicates the repository version and the URL, allowing for better debugging.
* The 'relax --version' print out now includes the full subversion info, if it is a checked out copy.
* Improvement for the model-free auto-analysis in the GUI. After execution, the main data pipe of the analysis tab is now set to the 'final' data pipe generated by the dauvergne_protocol[d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b]. This means that when switching between analysis tabs, that going back to the model-free tab will make the 'final' data pipe the current one, rather than the data pipe used to initialise the analysis.
* Better handling of the GUI wizard termination. The _handler_close() method is now handling the close events and together with the _ok() method,both now execute the current page's on_next() method. This means that on_next() is called for all avenues for exiting the wizard. This allows the user function pages to unregister themselves with the observer objects.
* The wizard window _cancel() method now calls the current page's on_next() method. This allows the page to clean itself up.
* The GUI analysis pipe_deletion() method now works with pipe bundles instead of pipe themselves. This is because the analysis tabs are now associated with the bundles rather than pipes.
* The 'bundle' arg is now functional in the [http://www.nmr-relax.com/manual/model_selection.html model_selection user function ] back end.* Added the 'bundle_to' arg to the [http://www.nmr-relax.com/manual/pipe_copy.html pipe.copy user function ] back end. This arg is now functional.* The dauverge_protocol auto-analysis [d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b] now uses the new 'bundle' user function args. This is used in the pipe copying to place the newly created pipe and in the model selection, both so that all pipes created during the analysis are located within the pipe bundle reserved for that analysis.
* The GUI user function window titles are now set to the 'title_short' value. This is because the long title can be far too long for a GUI window title!
* The long title or synopsis is now added to the GUI user function description text as italic text.
* Added the 'bundle' arg to the [http://www.nmr-relax.com/manual/model_selection.html model_selection user function ] specification.* Improvements to the 'bundle' arg specification of the [http://www.nmr-relax.com/manual/pipe_create.html pipe.create user function].* Added the new 'bundle_to' arg to the [http://www.nmr-relax.com/manual/pipe_copy.html pipe.copy user function]. This will be used to associated a newly copied data pipe with a pipe bundle.
* Added some backwards compatibility code for old GUI state files missing pipe bundles.
* Created a GUI test for loading an old relax 1.3 save state containing GUI analyses.
* Updated the dauvergne_protocol auto-analysis [d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b] to spawn all pipes into the named bundle.
* The generic_fns.pipes.pipe_names() function now can restrict the list of names to a specific bundle.
* The pipe editor window now handles the pipe bundling concept. There is a new button for the [http://www.nmr-relax.com/manual/pipe_bundle.html pipe.bundle user function], a new column showing the pipe bundles, and the pop up menu allows pipes to be associated with bundles if not already bundled.* The [http://www.nmr-relax.com/manual/pipe_bundle.html pipe.bundle user function ] back end now notifies all the pipe_alteration observers of the change. This is required for proper GUI interaction.* Refinements to the [http://www.nmr-relax.com/manual/pipe_create.html pipe.create user function ] definitions.
* The GUI analysis tabs now work with data pipe bundles rather than the original data pipe. The analysis wizard now uses the unique name for the new data pipe bundle field, and the starting data pipe defaults to 'origin'. The analysis pages show the bundle name rather than associated data pipe.
* The [http://www.nmr-relax.com/manual/pipe_delete.html pipe.delete user function ] is now cleaning up the data pipe bundles as needed. The deleted data pipe name is removed from any bundle it is in, and empty bundles are eliminated.
* Implemented the generic_fns.pipes.has_bundle() function for determining if a bundle exists.
* Modified the [http://www.nmr-relax.com/manual/pipe_display.html pipe.display user function ] backend to show the pipe bundles. This required the addition of the generic_fns.pipes.get_bundle() function.* Implemented the [http://www.nmr-relax.com/manual/pipe_bundle.html pipe.bundle user function], including the full description and the back end.
* The data store is_empty() method works again - the pipe_bundles structure is now blacklisted.
* Shifted the pipe bundle graphic and created a wizard PNG file for the GUI user function.
* Created icons for the pipe bundle concept.
* Implemented the generic_fns.pipes.bundle_names() function for returning a list of all pipe bundles.
* The [http://www.nmr-relax.com/manual/pipe_create.html pipe.create user function ] now creates pipe bundles in the back end. The new ds.pipe_bundles dictionary is used to hold lists of pipes associated with the pipe bundle name as the dictionary keys. The 'bundle' arg is passed into the ds.add() method for storage.* Added the 'bundle' keyword arg to the [http://www.nmr-relax.com/manual/pipe_create.html pipe.create user function ] definition.* Preparation for the implementation of pipe bundle concept - addition of system and GUI tests. This new pipe bundling concept is simply a way of grouping data pipes together. This will be useful for: grouping and categorisation of data pipes when multiple analyses are performed, the model-free dauvergne_protocol auto-analysis [d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b] will place all the data pipes it creates into one bundle, for the GUI mode analyses will be linked to pipe bundles rather than data pipes. This will allow switching data pipes to activate the correct analysis.
* The 'verbatim' user function description elements are now properly formatted in the GUI. These elements now use the font.modern_small formatting to have fixed-width characters.
* Table formatting improvements for the GUI user function descriptions.
* Improved the whitespace formatting of the spin data write out of relax_io.write_spin_data(). Now the column sizes are dynamically changed to match the data being written out. This is to fix the ugly write outs for when the name of the molecule is very long.
* Replaced all mention of 'arguments' from the user function docstrings with human readable text.
* The [http://www.nmr-relax.com/manual/state_load.html state.load user function ] will now recreate the GUI tabs. For this, the new state_load observer object has been created. The GUI analysis load_from_store() is registered with this object. And to prevent fatal racing in the GUI, the [http://www.nmr-relax.com/manual/state_load.html state.load user function ] operation is now synchronous. The [http://www.nmr-relax.com/manual/state_load.html state.load ] and [http://www.nmr-relax.com/manual/state_save.html state.save ] file arg defaults are now also set to 'state.bz2'.
* Removed a printout in the API documentation compilation.
* All of the user_function.object.Table instances in the specific code descriptions are now private. This hides them from the specific API, and allows the unit tests to pass.
* Converted a number of add_verbatim() calls to add_item_list_element() with items of None. This allows for proper formatting and indentation of equations. In the future, a possible add_equation() method might be added to provide text and LaTeX representations of equations in the user function documentation.
* Itemised lists without items are now supported in the prompt help strings. This is to mimic the LaTeX behaviour to allow lists with no 'bullets'.
* Shifted the prompt examples to the end of the description for the [http://www.nmr-relax.com/manual/value_display.html value.display user function].
* Converted all of the user functions to use the Desc_container class design. All of the user function descriptions, prompt examples, and additional documentation scattered around the relax sources have been merged into the Uf_info.desc list of Desc_container objects.
* The 'prompt_examples' and 'additional' user function structures are no longer passed into the prompt objects.
* The user function default args prompt help string text is now wrapped.
* Removed the starting newline from the user function prompt help string.
* Converted the [http://www.nmr-relax.com/manual/calc.html calc], [http://www.nmr-relax.com/manual/grid_search .html grid_search] and [http://www.nmr-relax.com/manual/minimise.html minimise ] user function descriptions to use Desc_container.
* Tables in the user function descriptions are now formatted for the prompt help strings. This is for the Desc_container objects. The list of lists are now converted to the text format originally used for the user function docstrings.
* Converted all of the alignment tensor user functions to the new Desc_container design.
* The Desc_container object now supports itemised lists.
* Lists are now formatted for the prompt user function help strings from the Desc_container objects.
* Converted the [http://www.nmr-relax.com/manual/align_tensor_display.html align_tensor.display user function ] to the new Desc_container design. This is to test out the list generation.
* The Desc_container.add_list_element() method now groups list elements together.
* Converted the prompt user function objects to use the new Desc_container objects for the help strings.
* Started to redesign the user function definition descriptions. The desc object has been converted into a list which will contain instances of the new Desc_container class. This class will hold the description information as blocks of text, including unformatted paragraphs, verbatim text, lists, tables, and relax prompt examples. The object has a number of methods used for inputting all of the information, as well as extracting it. The information in the Desc_container object is not formatted, for example tables will be stored as lists of lists. This will remove the need for parsing list, tables, verbatim text, etc. by the docs.latex.fetch_docstrings module. But these will need to be recreated for the prompt help strings, for the GUI user function descriptions, and for the user manual.
* Converted the [http://www.nmr-relax.com/manual/align_tensor_copy.html align_tensor.copy user function ] description to the new design. This is a test for the implementation of the description abstraction through the Desc_container objects. The 'desc', 'additional', and 'prompt examples' will all be merged into one 'desc'structure.
* Converted a few user functions to use the special "spin ID" arg type.
* Converted the structure.vectors spin_id arg to the special "spin ID" type. This is to improve vector loading in the GUI.
* Increased the size of the unit vector loading wizard in the model-free analysis. This now matches the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function ] size and allows it to fit.
* The min length is now handled much better in the Combo_list GUI input element.
* The GUI user function object create_wizard() method now returns True upon success. This is needed for calls to these objects.
* GUI test scripts are now executed via prompt.interpreter.exec_script(). This allows the preservation of imports within the scripts. The old execfile() method was causing the 'globals' to be overwritten, hence imports in the scripts are not visible inside methods or classes.
* The GUI auto-generated user function SetValue() method now skips function and function arg arguments. These are not supported in the GUI.
* Loosened the checking conditions for the test_set_value() J(w&omega;) mapping system (and GUI) test. Just like the consistency testing, the GUI string conversions to and from floats introduces a slight truncation.
* The consistency testing test_set_value() system (and GUI) test has been made less strict. The conversion of the bond length and CSA values to GUI strings and back to floats causes a slight numerical truncation.
* The specific analysis API base return_data_desc() now has a basic implementation. This will search through the global and then spin parameters objects, returning whatever is found.
* The specific analysis API base method calls to RelaxImplementError now send in the function name. This allows for better identification of what needs to be implemented.
* The specific analysis base API default_value() method is now functional. Rather than raising a RelaxImplementError, this method now searches in the global parameters then the spin parameters for a default value.
* Shifted out the interpreter components of the J(w&omega;) mapping tests into scripts. This allows the tests to work in the GUI test framework.
* Converted the consistency tests script to the new _execute_uf() design. This allows it to work with the GUI for the GUI tests.
* The jw_mapping system tests are now run as GUI tests.
* The user function intro string echoing has been turned back on for the GUI. The removal of the need for the prompt UI interface for the GUI user functions removed the intro print outs. These have been reimplemented within the GUI code now.
* Renamed the status.prompt_intro flag to status.uf_intro. This is because the flag will be used in all UIs.
* The [http://www.nmr-relax.com/manual/sequence_write.html sequence.write user function ] back end now defaults to True for all sequence columns.* The [http://www.nmr-relax.com/manual/grid_search.html grid_search user function ] inc argument cannot be None.
* Converted all of the prompt unit tests to the new auto-generated user function design.
* Updated the model-free auto-analysis GUI test to pass. Changes include opening and closing the about dialog, loading the sequence via the spin viewer window - testing this GUI element for the first time and the use of the methods behind the specific value.set buttons.
* The GUI base class now has access to math.pi. This is necessary as the system test scripts are run in this namespace rather than the interpreter namespace in which pi is defined.
* The Combo_list GUI input element can now handle values typed out by the user. This affects both the GetValue() and SetValue() methods.
* The [http://www.nmr-relax.com/manual/value_set.html value.set user function ] 'param' argument can now be manually set by the user rather than selected. A number of N-state model parameters require this.
* Better handling of empty data in the Sequence.GetValue() method.
* The non-supplied user function arguments in the GUI tests are now set to the default. This is for the _execute_uf() base method, and is essential for the free file format where the column arguments must, in many cases, be set to None.
* The execute_uf() method is now private.
* Added all of the N-state model system tests as GUI tests.
* Modified the GUI tests so that they can operate in the same way as the system tests. Now entire test suite classes can be executed in isolation by typing, for example: <nowiki>"$ relax --gui-test N_state_model"</nowiki>.
* Converted all of the N-state model scripts to use the new self._execute_uf() interface.
* Added some error checking for the system test class execution. This is for better user feedback for when the user supplied class does not exist.
* Entire classes of system tests can now executed. Rather than running the entire system test suite or individual tests, the system tests can now be run by class. For example to execute all of the N-state model system tests, just type: <nowiki>"$ relax -s N_state_model"</nowiki>.
* Eliminated the self._test_dir test class variable. The system and GUI tests will now use the same script path.
* Modified and renamed the self._execute_uf() method so that it will work with the system test scripts. The file and directory arguments are now merged, as required by the GUI user function pages.
* The Sequence GUI element now better handles single values in the GetValue() method.
* The specific_fns get_specific_fn() function now determines the data pipe type, if not supplied.
* Improved the [http://www.nmr-relax.com/manual/value_set.html value.set user function ] definitions.
* The model-free GUI auto-analysis now sets the default value for the parameter buttons. The CSA, bond length, proton and heteronucleus type buttons now launch the GUI user function with the default value set.
* The Sequence GUI input element can now handle single values passed into SetValue().
* The GUI tests base class execute_uf() method will now try to set all keyword arguments. This allows the user functions with free file format keyword arguments to be operational.
* The Combo_list GUI element now handles the wiz_combo_list_min user function argument argument. If not enough elements are set, Combo_list.GetValue() will return None. This is caught by the auto-generated GUI user functions on_execute() method, preventing the execution of the user function.
* The [http://www.nmr-relax.com/manual/spectrum_replicated.html spectrum.replicated user function ] back end now checks for lists of None or of 1 element.
* Renamed the user function argument argument wiz_combo_list_size to wiz_combo_list_min. This will be used by the Combo_list object to ensure a minimum length.
* The Rx auto-analysis peak loading wizard has been converted to the new auto-generated user function design.
* The prompt UI can now handle the user function argument type of 'val_or_list'.
* Eliminated the try logic in the arg_check is_*() functions as the raise_error flag can now be used instead.
* Created the arg_check.is_val_or_list() function for the [http://www.nmr-relax.com/manual/value_set.html value.set user function]. The value argument of this user function is now classified as a 'val_or_list' object, hence this is_val_or_list() replaces the use of is_str_or_num_or_str_num_list().
* Clean up of the prompt package __init__ module.
* Converted the vmd user functions to the auto-generation design.
* Eliminated the view user function as this is ancient dead code. This user function has essentially remained the same as when it was introduced at r788 back in the 0.3 relax line in October 2003! It has never actually performed any function and has somehow managed to survive in the source tree unnoticed.
* Converted the value user functions to the auto-generation design.
* The auto-generated GUI user functions can now handle the 'val_list' argument type. This is needed for the [http://www.nmr-relax.com/manual/value_set.html value.set user function ] whereby the 'value' argument can be almost anything,either as a single float, int, str, None, etc or as a list.* Converted the [http://www.nmr-relax.com/manual/temperature.html temperature user function ] to the auto-generation design.* Converted the [http://www.nmr-relax.com/manual/sys_info.html sys_info user function ] to the auto-generation design.
* Converted the structure user functions to the auto-generation design.
* Float and int numpy arrays and matrices are now supported for GUI user function arguments.
* The can_be_none argument is now propagated and stored in the Sequence and Sequence_2D GUI elements. Some debugging print outs have also been removed.
* Converted the spectrum user functions to the auto-generation design.
* Added the [http://www.nmr-relax.com/manual/spectrum_integration_points.html spectrum.integration_points user function ] back end so that the auto-generated class can work. This raises a RelaxImplementError as this is not implemented, but allows the front end to be accessible.* Renamed the [http://www.nmr-relax.com/manual/results_read.html results.read ] and [http://www.nmr-relax.com/manual/results_write.html results.write ] user function 'directory' argument to 'dir'. This in both the front and back ends.
* Shifted the free_file_format GUI element into its own class. The wizard page free_file_format() method for generating the GUI element has been shifted into the components.free_file_format.Free_file_format class.
* Redesigned the free file format window. The settings module has been renamed to components.free_file_format, as it simply contains the free file format window. This renaming is in preparation for shifting all of the free file format code into this module to create a special GUI element object for it, rather than being part of the wizard page code base. The Base_window code has been merged into the Free_file_format_window code, as no other windows use it any more.
* Eliminated the ancient unused load_sequence() GUI element. This was part of the settings menu in the original version of the GUI, but now has no purpose.
* Converted the sequence user functions to the auto-generation design.
* The [http://www.nmr-relax.com/manual/model_selection.html model_selection user function ] now defaults to AIC.
* Converted the results user functions to the auto-generation design.
* The [http://www.nmr-relax.com/manual/reset.html reset user function ] is now called in synchronous mode in the GUI.
* The user function 'gui_sync' attribute is now passed all the way into the GUI user function objects.
* The Uf_container now has the 'gui_sync' variable for switching between asynchronous and synchronous operation.
* Converted the [http://www.nmr-relax.com/manual/reset.html reset user function ] to the auto-generation design. A fast and dirty wizard graphic was also added for the user function.
* Converted the residue user functions to the auto-generation design.
* Created an icon for the relax_fit user function class.
* The Sequence and Sequence_2D wizard page GUI element buttons now have a tooltip.
* The paramag user functions are now using the align_tensor icons and wizard graphics.
* Converted the [http://www.nmr-relax.com/manual/paramag_centre.html paramag.centre user function ] to the auto-generation design.
* The n_state_model user function menus now use icons.
* Created a set of basic icons for the N-state model user functions.
* Improved the relax noe icons by modifying the wizard SVG file.
* Converted the noe user functions to the auto-generation design. The noe wizard graphic has been converted into icons for the menus.
* Created the generic_fns.spectrum.get_ids() function for returning all current spectrum IDs. This will be used by the [http://www.nmr-relax.com/manual/spectrum_read_intensities.html noe.read_intensities user function].
* Increased the icon content in the auto-generated user function menu.
* Added the archive-extract Oxygen icon.
* Added all sizes of the dialog-ok and dialog-ok-apply Oxygen icons.
* The user function arguments can now have minimum and maximum values for integers specified. The min and max arguments can now be given,and these are then propagated all the way to the GUI elements. For the Sequence and Sequence_2D elements this has no effect yet as they do not implement wx.SpinCtrl elements.
* Eliminated the 'prune' argument to the [http://www.nmr-relax.com/manual/monte_carlo_error_analysis.html monte_carlo.error_analysis user function]. This will never be used again, and might tempt some users into changing the value and damaging their analysis!
* Created a wizard graphic for the monte_carlo user functions from the oxygen 'actions/roll' icon.
* Converted the monte_carlo user functions to the auto-generation design.
* The consistency_tests.set_frq and jw_mapping.set_frq have been synchronised. These perform exactly the same purpose, and have been made almost identical.
* Improved the jw_mapping.set_frq wizard page size.
* Refinement of the [http://www.nmr-relax.com/manual/jw_mapping_set_frq.html jw_mapping.set_frq user function]. The wizard page now shows a read only ComboBox of the allowed spectrometer frequencies, so that the user does not need to input the exact value. The descriptions have also been improved.
* Created the generic_fns.frq.get_values() function for returning a list of unique spectrometer frqs.
* Improved the [http://www.nmr-relax.com/manual/relax_data_read.html relax_data.read user function ] docs to stress the importance of frequency.
* Converted the jw_mapping user functions to the auto-generation design.
* Improvements for the [http://www.nmr-relax.com/manual/consistency_tests.set_frq.html consistency_tests.set_frq user function ] descriptions.* The [http://www.nmr-relax.com/manual/select_spin.html select.spin ] and [http://www.nmr-relax.com/manual/deselect_spin.html deselect.spin ] user function arguments spin_id can be None.
* Removed the leading whitespace from the colour module documentation variables.
* All leading whitespace is stripped from the docs before creating the auto-generated user function description. The detection of the end of the table has also been simplified, as stripping the whitespace broke the logic.
* Converted the frame_order user functions to the auto-generation design.
* Added error checking to the Uf_container to eliminate typo coding mistakes. This checks that a variable is not set twice (copy and paste error).
* Converted the [http://www.nmr-relax.com/manual/fix.html fix user function ] to the auto-generation design. The object-locked and object-unlocked Oxygen icons have been combined to create a wizard graphic for this user function.* Created wizard graphics for the [http://www.nmr-relax.com/manual/eliminate.html eliminate user function].* Converted the [http://www.nmr-relax.com/manual/eliminate.html eliminate user function ] to the auto-generation design.
* Function arguments are now ignored as well in the auto-generated GUI user functions.
* Created icons and wizard graphics for the auto-generated dx user functions.
* Shifted all the gui/images graphics into the graphics/misc directory. This finally brings in all of the graphics into one place.
* Set the state user function class menu icon to the relax icon.
* Converted the molmol user function to the auto-generation design. For this process, the [http://www.nmr-relax.com/manual/molmol_macro_apply.html molmol.macro_apply ] and [http://www.nmr-relax.com/manual/molmol_macro_write.html molmol.macro_write ] user function colour_start and colour_end arguments had to be split, just as in the pymol user functions. They previously accepted both a Molmol or X11 colour name or an RGB colour array but are now separate arguments.* Converted the pymol_control user function to the auto-generation design. For this process, the [http://www.nmr-relax.com/manual/pymol_macro_apply.html pymol.macro_apply ] and [http://www.nmr-relax.com/manual/pymol_macro_write.html pymol.macro_write ] user function colour_start and colour_end arguments had to be split. They previously accepted both a Molmol or X11 colour name or an RGB colour array. Now there are separate arguments for the colour name and RGB colour array.
* The Sequence based wizard page GUI elements now return None if the field is empty. This was previously returning [] or () to the auto-generated user functions when they were expecting None.
* The auto-generated user function menu is now correctly sorted.
* Converted the [http://www.nmr-relax.com/manual/model_selection.html model_selection user function ] to the auto-generation design.* Added graphics for the [http://www.nmr-relax.com/manual/model_selection.html model_selection user function].* Created icons and wizard graphics for the [http://www.nmr-relax.com/manual/calc .html calc] and [http://www.nmr-relax.com/manual/minimise.html minimise ] user functions.* Created icons for the [http://www.nmr-relax.com/manual/grid_search.html grid_search user function].
* Eliminated the wiz_combo_default and combo_default arguments from the GUI auto-generated user functions. These are now provided by the 'default' argument.
* Eliminated the 'wiz_combo_default' user function argument argument. This argument is duplicative of the 'default' argument.
* The default value of the user function arguments is now set in the wizard page elements. This is for the auto-generated user functions.
* Converted the [http://www.nmr-relax.com/manual/calc.html calc], [http://www.nmr-relax.com/manual/grid_search.html grid_search ] and [http://www.nmr-relax.com/manual/minimise.html minimise ] user functions to the auto-generation design. The [http://www.nmr-relax.com/manual/minimise.html minimise user function ] required a lot of work, as the minimise(*args, *kargs) construct is incompatible with the auto-generation design. As this is hardly used in the field, everything has been converted to specific keyword arguments. This will have a side benefit of being easier to understand for a user. The back end was modified accordingly.
* The 'additional' sections are now shown before the 'examples' section in the prompt help system.
* The user functions without a base class are now supported in the prompt, script, and GUI modes. This is for the auto-generated user functions not stored in a user function class object.
* The 'num_or_num_list' and 'num_or_num_tuple' argument types are now supported in the GUI. These are for the auto-generated GUI user functions. The 'num_or_num_tuple' argument type is used for the [http://www.nmr-relax.com/manual/diffusion_tensor_init.html diffusion_tensor.init user function], for example.* Improvements for the [http://www.nmr-relax.com/manual/diffusion_tensor_init.html diffusion_tensor.init user function ] data setup.
* Converted the diffusion_tensor user functions to the auto-generation design. The icons and wizard graphics for these user functions has also been created.
* Created icons and wizard graphics for the palmer user functions.
* Merged the Base_value, Float, Integer, and String wizard elements together into the single Value class. This simplifies the code, as the differences between them was very minor.
* Floats and tuples of numbers are now supported by the user function GUI argument elements.
* The [http://www.nmr-relax.com/manual/align_tensor_display.html align_tensor.display user function ] backend argument is now a keyword argument. This is for supporting the auto-generated user functions.
* Created the align_tensor.get_ids() method for use in the GUI wizards. This will be required for the auto-generated user function GUI front ends.
* The pipe.copy pipe_from wizard element is now read only.
* The list_titles argument is now accepted for the auto-generated user functions. This is for a list of lists, and are the titles for the lists.
* The auto-generated Uf_page.add_contents() method now raises a RelaxError if the Python type is unknown.
* The menu_text variable now defaults to <nowiki>'' </nowiki> so that the GUI does not die if this is not set.
* Removed the wiz_desc arguments from the pipe user functions.
* Eliminated the wiz_desc argument in the auto-generated user functions. Now the desc_short argument will be used instead for the GUI user function elements.
* Created methods for returning user function and class data objects from the user function data object. These are called get_class() and get_uf().
* The auto-generated prompt user function front end objects are now executable. The uf.backend variable is now the executable Python object. The pipe user function class has been updated for the uf.backend change.
* Implemented the missing back end of the [http://www.nmr-relax.com/manual/pipe_current.html pipe.current user function]!
* Expanded and fixed the argument checking for the prompt auto-generated user function front ends.
* The auto-generated prompt user function front ends now convert arguments to keyword arguments. This is important as a keyword argument can be supplied without the keyword in Python.
* Created a number of special objects for the user function data storage.
* Created the user_functions package.
* Added checks for the proton frq for the [http://www.nmr-relax.com/manual/relax_data_read.html relax_data.read ] and [http://www.nmr-relax.com/manual/relax_data_back_calc.html relax_data.back_calc ] user functions - if the frequency is not exact or is less than 1 MHz, warnings are now given to the user.
* Made the bond vector extraction print out from structure.vectors more informative.
* Created a sample script for BMRB data deposition.
* The relax data store is_empty() method now only prints to STDERR if the verbosity flag is set.
* Changed the behaviour of the generate_spin_id() and generate_spin_id_data_array() functions. This is a large change affecting many parts of the code base. The problem that this solves is the incorrect usage of the '&' character in spin IDs, tripping up on the powerful Selection object of {{gna link|url=gna.org/users/macraild|text=Chris MacRaild}}. For example, the spin ID ':2&:Glu' cannot be correctly handled. This actually matches all residues with the number 2, and all residues with the name 'Glu'.
* The scons 'clean' target now removes *.pyo files as well.
<section end=changes/>
=== Bugfixes ===
<section begin== Bugfixes ==bugfixes/>
* Fixes for the bmrb.write backend - the generic_fns.exp_info module should be used rather than the cdp. The abstraction via the generic_fns.exp_info module is needed to make sure all the relevant current data pipe structures are set up.
* Fix for the [http://www.nmr-relax.com/manual/bmrb_display.html bmrb.display user function ] - this user function never worked as pystarlib expects a file path as a string, but a modification of pystarlib fixes this.
* Fix for the model-free about dialog - the fonts for the different titles can now be set. The new font.roman_font_18 has been added, and the about dialog draw_title() method now takes the alt_font arg for specifying an alternative font.
* Bug fix for the model-free specific analysis duplicate_data() method - the cdp.exp_info should be skipped. This was not picked up before as this structure is normally non-existent during the analysis.
* Bug fix for running a script when launching the GUI. This was completely failing but now the script is executed prior to the launching of the GUI.
* Bug fix for the generic_fns.spectrum.replicated_ids() function for when no replicates exist. This will now return an empty list instead of an error being raised.
* Fix for the [http://www.nmr-relax.com/manual/spectrum_read.html spectrum.read user function ] - a RelaxError is now raised if the file name is not given. This is important for the GUI to prevent unintelligible errors to be presented to the user.
* Fix for the experimental information in the relax data store - the information can now be reset.
* Bug fix - the 'relax --version' print out now works from any directory. This was only working if relax was being run from the installation directory!
* Fix for the prompt and script UI user function intro printouts. This text is no longer passed through the format_text() function which has problems with newline characters.
* Fixes for the GUI tests tearDown() method. All wx events are now flushed before the deletion of GUI elements.
* The [http://www.nmr-relax.com/manual/pipe_delete.html pipe.delete user function ] now operates synchronously in the GUI to avoid the GUI blowing up!
* The user function pages are now registered and unregistered with the 'gui_uf' observer object. This allows the ComboBox args to be properly updated with asynchronous user function calls. The old update method suffered from racing and hence often updated before the user function had executed. Now the on_display() method registers the GUI user function page update_args() method, and the on_next() method unregisters it, allowing the observer to update the page only when it is visible to the user.
* Fix for the GUI tests - the ds.tmpfile string is now being created by the base setUp() method. This is needed to stop files from being created within the relax directory tree.
* Bug fix for the Combo_list.GetValue() method - it can now handle no user input cleanly.
* Fix for the Analysis_controller.on_page_changed() method for reset events. The relax data store now always has a ds.relax_gui object!
* Fix for the post_reset() method of the Analysis_controller object. This unregisters all the analyses from the observer objects, and calls the set_init_state() method only once all analysis pages are deleted. This in combination with the synchronous [http://www.nmr-relax.com/manual/reset.html reset user function ] calling prevents the GUI from blowing up!
* Fix for the gui.misc.gui_to_tuple() function. This was failing in many cases, especially where the value is not a tuple to start with.
* Bug fix for the [http://www.nmr-relax.com/manual/bruker_read.html bruker.read user function ] for reading Bruker Dynamics Centre files - the spectrometer frequency needs to be converted from MHz to Hz.
* Bug fix for the loading of the molecule name and type from relax state or results files. The str() builtin function is now used to convert the string from unicode to a normal string. This is needed as u'My mol' != 'My mol', breaking a number of tests.
* The [http://www.nmr-relax.com/manual/relax_data_delete.html relax_data.delete user function ] is now finally properly implemented (bug #19785, [https://gna.org/bugs/?19785)bug #19785].
* The model-free minimisation is now checking for multiple vectors per spin, and raises a RelaxError.
* Fix for the relax controller SplitIO() setup for logging and teeing modes. The SplitIO() usage is now disabled for the test suite. This prevents a doubling of the print outs in the GUI tests. The problem was introduced at r15843 with the accommodation for the logging and teeing modes with the GUI.
* Created a system test Mol_res_spin.test_residue_delete() demonstrating a failure of the user function - deleting the first residue removes the entire sequence.
* Fixes for most of the structure user functions - the pipe check is now performed at the start.
<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_2.0.0 Official release notes]
* {{gna link|url=gna.org/forum/forum.php?forum_id=2354|text=Gna! news item}}
* [http://article.gmane.org/gmane.science.nmr.relax.announce/5 Gmane]
* [https://mail.gna.org/public/relax-announce/2012-06/msg00000.html Local archives]
* [http://marc.info/?l=relax-announce&m=135070664825021&w=2 MARC]
<section end=links/>
 
== Announcements ==
{{:relax release announcements}}
 
 
== References ==
* [*d'Auvergne and Gooley, 2007] {{#lst:Citations|dAuvergneGooley07}}
* [*d'Auvergne and Gooley, 2008b] {{#lst:Citations|dAuvergneGooley08b}}
<HarvardReferences />
== See also ==
* [http://www.nmr-relax.com/api/2.0/ The relax 2.0 API documentation]{{:relax release see also}}[[Category:GUI]][[Category:prompt UI]][[Category:Release_NotesUser functions]]
Trusted, Bureaucrats
4,223

edits