newsrelax - News: relax version 2.0.0.

 
 
Show feedback again
Latest News
relax version 3.3.4. posted by bugman, Thu 04 Dec 2014 09:46:16 AM UTC - 1 reply
relax version 3.3.3. posted by bugman, Mon 24 Nov 2014 02:55:15 PM UTC - 1 reply
relax version 3.3.2. posted by bugman, Fri 14 Nov 2014 03:38:11 PM UTC - 2 replies
relax version 3.3.1. posted by bugman, Thu 09 Oct 2014 03:04:28 PM UTC - 2 replies
relax version 3.3.0. posted by bugman, Fri 05 Sep 2014 10:21:38 AM UTC - 6 replies
[Submit News]
[70 news in archive]

relax version 2.0.0.

Item posted by Edward d Auvergne <bugman> on Wed 13 Jun 2012 12:07:54 PM UTC.

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/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.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!

Download

The new relax versions can be downloaded from either http://www.nmr-relax.com/download.html or http://download.gna.org/relax/. 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/).

Full list of changes

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 "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 specific and GUI tests can now be executed by group. For example all the model-free system tests can be run with '$ relax -s Mf'. This is very useful for relax development.
  • 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, 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.
  • More metadata is now read from the NMR-STAR files into the relax data store.
  • The bmrb.display user function is now operational.
  • Big redesign of the Spectral_error_type_page wizard page used in the auto NOE and Rx analyses - this now includes the full description of the spectrum.error_analysis user function, so that the user has easy access to a description of how peak intensity errors and handled.
  • Mac OS X font size and text layout improvements in the GUI.
  • Improvements to the spacing at the top and bottom of the list GUI elements - this includes a spacing before the bottom buttons.
  • The relaxation data 'Add' button in the model-free GUI analysis tab is now a multi-page wizard which allows all of the relaxation data metadata to be input.
  • 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.

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.
  • The completion of the test suite in the GUI mode now sets the controller main gauge to 100%.
  • 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 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 bmrb.read user function is now reading in all of the relaxation data metadata into the data store.
  • Improved the robustness of the 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 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 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 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 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.
  • The about dialog now used the gui.fonts module - this allows the fonts to scale to a decent size on Mac OS X, so that the text is readable.
  • 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 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.
  • Renamed the GUI toolbar() method to build_toolbar(), as the toolbar object is also called 'toolbar'!
  • Updated the relaxGUI splash screen copyright notice.
  • Improved the button size and spacing in the list GUI elements.
  • The 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.
  • The action_export_bmrb() method now opens the BMRB export window.
  • The base list objects are now updated when pipe changes occur.
  • Created a 100x100 version of the BMRB logo - this will be used for the export window.
  • The spin viewer window now uses graphics.fetch_icon() and shows the button text in the toolbar.
  • Added the mimetypes/text-x-texinfo.png Oxygen icons. This is for the relaxation data metadata button.
  • Merged the spectrum list GUI element into the base list element.
  • Merged the relaxation data list GUI element with the base list element. The base list element now has a delete() method, though I'm not sure if it is ever used. Now all list GUI elements are derived from the Base_list class. This will simplify changing or improving all of these elements.
  • The base list element now has an Enable() method which simply enables or disables all buttons (as is done in the relaxation data list). The button size is now specified as a (x, y) tuple. And the GUI object can now be passed into the elements, as this is needed for the relaxation data metadata window.
  • Large simplifications of the relaxation data metadata list GUI element by using the Base_list class.
  • Modified the molecule list GUI element to use the Base_list base class. The base list GUI element has also been updated to support popup menus and to change the StaticBox label upon updates. The base is_complete() method has also been added to always return True.
  • Small updates to the base list GUI element.
  • Created a GUI element for listing and setting the citations relevant for the analysis - this will be used in the BMRB export window.
  • Created a GUI element for listing and setting the scripts used in the analysis - this will be used in the BMRB export window.
  • The GUI user functions now have a subtitle at the top stating the name of the user function - this is to reinforce the user function naming system to the user, and also to clearly identify which window belongs to which user function.
  • Split the software GUI element into the base_list base GUI listing element - this base class will be useful for abstracting many of the list GUI element methods.
  • Created a GUI element for listing and setting the software used in the analysis - this will be used in the BMRB export window.
  • Created a GUI element for listing and setting molecule attributes - this will be used in the BMRB export window.
  • The lists in the GUI user function descriptions are no longer separated by blank lines - this allows long lists to fit much better into the wizard windows.
  • 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 bmrb.write user function to see if the file name has been supplied. This results in a nicer message for the GUI.
  • The bmrb.display and 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 relax_data.read or bruker.read user functions, but then this is followed by the relax_data.peak_intensity_type, relax_data.temp_calibration and relax_data.temp_control user functions. This allows the metadata to be set up prior to the model-free calculations.
  • The 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 relax_data.peak_intensity_type user function definition.
  • Big expansion and improvements of the 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 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 spin.name and 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.
  • Created a menu entry called 'File->Export for BMRB deposition'.
  • The spectrum and relaxation data list GUI elements now use graphics.fetch_icon for all icons.
  • Renamed some of the methods in the relaxation data list GUI element.
  • The spectrum and relaxation data list GUI elements now use the user function definitions for icons.
  • Changed the relax_fit.relax_time icon to the actions.chronometer Oxygen icon.
  • Added the chronometer.png Oxygen icon.
  • Large expansion of the pop up menu for the spectral list GUI element. This now includes most of the spectrum and relax_fit user functions.
  • 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 relax_data.frq and relax_data.type user function definitions and backends.
  • Created the Relax_data.test_reset() system test for testing relax_data.frq and 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 molecule.name and 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 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. 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 model_selection user function back end.
  • Added the 'bundle_to' arg to the pipe.copy user function back end. This arg is now functional.
  • The dauverge_protocol auto-analysis 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 model_selection user function specification.
  • Improvements to the 'bundle' arg specification of the pipe.create user function.
  • Added the new 'bundle_to' arg to the 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 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 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 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 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 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 pipe.display user function backend to show the pipe bundles. This required the addition of the generic_fns.pipes.get_bundle() function.
  • Implemented the 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 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 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 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 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 state.load user function operation is now synchronous. The state.load and 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.
  • Removed the vertical lines in the tables of the prompt UI help strings. The tables now look much more professional.
  • The GUI user functions now use the new Desc_container and Table user function classes. The descriptions for the user function wizard pages are now being taken from the new user_functions.objects.Desc_container objects, lists of which are the user function definition 'desc' objects. The tables via the user_functions.objects.Table object is being formatted as in the prompt user function help text, though without vertical lines. The lists and itemised lists are currently formatted the same as in the prompt UI.
  • The Desc_container.element_loop() method can now yield the title too, if asked.
  • Better spacing in the list of tables section of the PDF user manual.
  • Complete rewrite of the docs.latex.fetch_docstrings module. This is a significant simplification for the creating of the user function documentation within the user manual. Some of the long list of changes include: The file docs/latex/fetch_docstrings.py is no longer an executable script and now operates solely as a Python module; all of the original docstring section parsing code has been eliminated; the searching for user functions in the prompt UI namespace has been replaced; the new user function definitions are directly used and the documentation for each user function section generated via the self.build_*() methods; the complicated ascii table parsing and rebuilding into a LaTeX table has been eliminated; the self.write_*() methods have been created for building the various sections of the user function documentation (paragraphs, verbatim text, prompt examples, lists, itemised lists, and tables); tables are no longer duplicated, triplicated, etc. and instead a reference to the first instance of the table is inserted - this is a significant space saver as one of the copies of the multi-page X11 colour table is removed.
  • Renamed the Uf_tables.add_table() 'title' arg to 'caption', and added the new 'caption_short' arg. The name change is fairly logical, as this is a caption. The 'caption_short' arg will be used for the list of tables in the LaTeX user manual.
  • The Molmol colour table is no longer a LaTeX longtable in the user manual.
  • The prompt UI table creation is now using the Table.spacing variable for adding empty lines between rows.
  • The Monte Carlo description now uses an itemised list for the listing of the steps involved.
  • The prompt UI help string construction code is now handling the new Uf_tables singleton.
  • Added a check to Uf_tables.get_table() to make sure that the table corresponding to the label exists.
  • Added a check to Desc_container.add_table() to make sure the label is a string.
  • All of the user function documentation tables now use the new Uf_tables singleton structure. The special properties for the colour module tables (longtables and now spacing) have been added as well.
  • Created a new way of defining and inputting tables into the user function descriptions. This introduces the user_functions.objects.Table for holding all the table data and metadata, and the user_functions.data.Uf_tables singleton object for holding all the tables. This design will allow more metadata (for example using longtables in the LaTeX user manual) to be specified. The singleton collection of tables with unique labels will also allow the elimination of duplicated tables in the PDF and HTML user manuals. The new table title metadata will also be used for the table headings in the user manuals.
  • 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 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.
  • Removed the 'prompt_examples' and 'additional' variables from the Uf_info containers. These have been superseded by the Desc_container objects.
  • Prompt examples are now followed by 2 newlines in the prompt help strings. This restores much of the original formatting for these examples.
  • Added support for no spacing in tables for the prompt help strings. The Desc_container.add_table_titles() method now accepts and stores the 'spacing' arg. This is passed all the way into the prompt help system to format the tables with.
  • Added a check in the prompt help _build_doc() method for the user function description. This should, together with the _build_doc() unit tests, help to uncover all unconverted user function 'desc' variables.
  • Created an algorithm for wrapping table columns to fit within status.text_width. This is for the prompt user function docstring tables. The columns are now dynamically wrapped so that the table will not be wider than the given width. For example the value.set user function description table would normally have a total width of 238 characters, but this now fits within one screen of text under all operating systems.
  • Created two unit tests for the _build_doc() methods of the prompt user function objects. This is for the prompt user function class objects and the user function objects themselves. The _build_doc() methods are used to generate the prompt help strings.
  • Converted all of the OpenDX user functions to the new Desc_container design. This tests out the use of 'additional' outside documentation.
  • Improved the user function class prompt help string. The user function list now uses bold text, and the user function title is also now given.
  • The prompt help string for user function classes now includes info about the member user functions.
  • The Uf_info.uf_loop() method can now restrict the looping over a given user function class.
  • Large improvements to the prompt help strings for the user function classes. These are now formatted with section using bold text.
  • 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 calc, grid_search and 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.
  • Itemised lists and verbatim text are now formatted properly for the prompt help strings.
  • Converted align_tensor.init to the Desc_container object design to test itemised lists.
  • 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 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 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 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.
  • The GUI user functions now called by the results viewer window now have the parent set to this window.
  • The GUI user function page update_args() method now has a docstring and returns True when successful.
  • Rearranged the spin.name args and converted the spin ID to the special spin ID type.
  • Prevention of multiple RelaxErrors from the user functions. The update_args() method returns False if an error occurred on updating the list of choices for an arg. This is now caught by all parts of the code where it is called, preventing further execution.
  • Improvements to the structure.load_spins user function definition. The spin_id arg now uses the special 'spin ID' arg type for the spin ID GUI input element.
  • A number of improvements for the spin ID GUI input element. This includes: the use of SetValue() for strings not in the list of choices; defaulting the choices to ['@N', '@C', '@H', '@O', '@P'] if not supplied; a tooltip white space fix; and removal of the None element in the list of choices, as this is not a read only box.
  • Increased the size of the spin loading wizard to match that of structure.read_pdb.
  • The Value GUI input element UpdateChoices() method now handles non-selection strings in the ComboBox. The SetStringSelection() method is now only used when the combo default is one of the choices, and SetValue() when not in the list of choices.
  • Decreased the amount of waiting time in the GUI interpreter flush() method. This will allow speed ups in certain parts of relax (for example some GUI tests).
  • The GUI test _execute_uf() base method now allows the wizard run() method to be executed. This gives a better work out of the user functions and matches more closely to what a user will experience.
  • Deleted a ton of now unused and useless code from gui.analyses.results_analysis.
  • Print statement conversions to function calls for Python 3.x. All non-debugging print statements are now function calls. The debugging printouts have been deleted.
  • Complete redesign and creation of the 2nd version of the relax XML format for save and results files. This is a BIG set of changes! It includes the following: the XML files now have the new 'file_version' attribute within the 'relax' XML element, this is now set to '2', and if unset it is assumed that the file version should be 1; the file_version integer value is now propagated through all of the from_xml() methods so it can be passed into the data.relax_xml.xml_to_object() function - this prevents a mixture of v1 and v2being assumed for different parts of the XML; an XML namespace fix - the xmlns="http://www.nmr-relax.com" attribute is now finally visible; the data.relax_xml.object_to_xml() function has been added for creating the new relax XML syntax - this will handle and convert many more basic Python object types into IEEE-754 byte arrays, for example lists and dictionaries of floats, or numpy vectors and matrices, and this function is now used throughout the code base for converting Python objects to XML; the data.relax_xml.xml_to_object() function has been expanded to match the functionality of data.relax_xml.object_to_xml(); the Python object XML elements now have the 'type' attribute indicating the Python object type - this is important for the processing of the file, especially for handling all types of numpy structures; the Python object value is now stored in a sub XML element called '<value>' - if it is a float, or is a simple type which contains floats, then the sub XML element <ieee_754_byte_array> is created for storing a full precision version of the floats; the v1 and v2 of the format together with the pre- and post-Python 2.7.3 XML toprettyxml() changes are now represented as test_suite/shared_data/model_free/OMP/final_results_trunc_1.3*.bz2 files, and a 5th file is added to test the IEEE-754 conversions by corrupting many of the floats.
  • The arg_check.is_float_matrix() function can now handle empty lists.
  • Deleted the NOE data_names() specific analysis method. This should operate through the base methods now.
  • Spelling fix - converted the noun 'print out' to 'printout'.
  • Added minimisation parameters to the N-state model specific analysis parameter list.
  • Updated the OMP model-free results file in the test suite shared data directories for recent changes. The ordering of model-free parameters is slightly different now.
  • The 'select' global param can have a corresponding MC simulation structure.
  • The specific API data_names() method now accepts the 'scope' argument. This is used to differentiate global verses spin parameters.
  • Lots of improvements for the specification of the model-free global and spin parameters.
  • The specific API param list base_loop() and loop() methods now match against the parameter scope. This allows for the differentiation of global from spin parameters.
  • Improvements and fixes for the minimisation parameters in the specific API param list object.
  • The specific API param list get_desc() method now skips the error and sim structures.
  • Removed a number of specific API methods from the model-free analysis. These are now provided by the base class.
  • Large reworking of the specific analysis API. Many specific methods relating to parameters have been shifted into the API base class. These include: data_names(), data_type(), default_value(), return_conversion_factor(), return_data_desc(), return_data_name(), return_grace_string(), return_units(). These are now essentially provided by the parameter list object. All of the global and spin parameter lists have now also been merged into the single 'self.PARAMS' structure.
  • The py_type is now set for the minimisation parameters.
  • Renamed 'param_set' to 'set' in the specific API param list object.
  • Split the specific API parameter object loop() method into two. The new base_loop() method loops over the parameter names according to set, whereas the loop() method now supports and returns the error and simulation parameter names as well, if set.
  • The specific API param list object now sets up a number of spin params and min params. The spin 'select' and 'fixed' parameters are set up in the _init_() method, whereas the add_min_data() method will be used to add minimisation parameters.
  • Added the 'scope' arg to the specific API param list add() method. This will be used to merge the GLOBAL_PARAMS and SPIN_PARAMS lists into one.
  • Created the specific API param list loop() method for looping over parameter names.
  • All the get_*() methods of the specific API parameter list objects now call self.check_param(). This new check_param() method raises a RelaxError if the parameter is unknown.
  • The parameter set 'params' or 'generic' can now be specified in the specific API parameter lists.
  • The GUI tests _execute_uf() base method now simulates a click on the 'ok' button. This gives the user function wizards a much deeper work out.
  • Renamed the Python type arg from 'type' to 'py_type'.
  • Added the 'min_stats' flag to the specific API parameter list objects. This indicates if the minimisation statistics are part of the parameter set. This is a flag to the _init_() method, as it applies to the entire parameter list.
  • Expanded the specific API parameter list object to include the Python type and error and sim flags. This includes the addition of the get_err(), get_sim(), and get_type() methods.
  • Created the Dead_uf_pages.test_mol_create() GUI test demonstrating a failure in the user functions. This mimics a click on the 'ok' buttons, showing a problem with running a GUI user function twice.
  • The relax GUI state_load() method now checks if the data store is empty. Previously a warning was only giving is analysis tabs are loaded. Now the warning occurs whenever there is data in the relax data store.
  • Eliminated all of the wizard GUI input methods. These are now all covered by the gui.input_elements package, so are no longer needed. The analysis wizard had to be converted to using the package, but the methods are now no longer used.
  • Converted the spin_id_element() wizard method into the gui.input_elements.spin_id.Spin_id GUI element.
  • The gui.string_conv.list_to_gui() function can now handle numpy arrays.
  • The structure.rotate R arg now defaults to the identity matrix. This is simply for the GUI.
  • The frame order system tests are now being run as GUI tests as well.
  • Converted all of the frame order system test scripts to be executable as GUI tests.
  • 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) 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) 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 sequence.write user function back end now defaults to True for all sequence columns.
  • The 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 model-free GUI auto-analysis 'About' dialog is now stored as a class instance variable. This allows it to be manipulated remotely, for example by the GUI tests.
  • The GUI user functions are now going straight to the back end rather than through the prompt. The GUI user functions were previously passing through the prompt UI user functions for argument checking, which then passed on to the back end. Now the prompt is bypassed, and the back end is being directly called. This should speed up the user functions, and specifically the GUI tests.
  • The prompt UI versions of the auto-generated user functions are now stored in self._uf_dict. This is a dictionary whereby the keys are the full user function names as text. This is designed for speed, so that the user function object can be retrieved much faster.
  • All the wizard method 'event' arguments have been converted to keyword arguments. This is for better remote control, for example by the GUI tests.
  • All the model-free GUI auto-analysis method 'event' arguments have been converted to keyword arguments. This is for better remote control, for example by the GUI tests.
  • Converted many GUI functions expecting a wx.Event to have the event as an optional argument. These are now keyword arguments defaulting to None. This allows remote control of GUI elements, which is needed for the GUI tests.
  • Removed the reinitialisation of the relax data store GUI object in the GUI test tearDown() method. This is not needed as it is done by the data store reset anyway.
  • Removed a time.sleep() call which slows down the GUI tests by a significant amount. This adds 0.5 seconds per user function which display info. For example this is 8 seconds for just the Bmrb GUI tests! This delay is not necessary, so has been eliminated.
  • The user function docstrings are now created when the help system is invoked. This prevents all user function docstrings from being built at the start, or any time the interpreter class is instantiated. Instead the docstrings are created on demand. Therefore for most relax usage, the docstrings for most user functions will be rarely built. This decreases start times of ~6 seconds down to ~0.06 seconds!
  • The GUI tests are now recycling the GUI user function wizards and pages as well. This required a number of modifications; the user function object wizard creation has been shifted into the create_wizard() method; the status.gui_uf_force_sync flag has been introduced to force synchronous operation of the GUI user functions; the wx_wizard_run keyword arg has been added to the user function object to prevent the automatic running of the wizard; the GUI test tearDown() base method no longer destroys the GUI or wizards, as they are needed in subsequent tests.
  • Removed the useless GUI interpreter flush() call in the GUI tests base _execute_uf() call. This is not needed as the GUI user function calls are synchronous. This cuts the GUI test running time down by about 1/4!
  • The wizards for the individual user function pages are now recycled. This should speed up the GUI (and the GUI tests massively). Closing the wizard calls the Close() rather than Destroy() method, so the wizards are still in memory. A new call to an old GUI user function object will simply call SetValue() for all keyword arg GUI elements, hence reset the element. The Wizard GUI object has been modified to only add the buttons if they do not currently exist. Without this, a new set of buttons is added each time the user function wizard appears.
  • 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 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.
  • Updates to the N-state model specific code. The default_value() and return_data_desc() methods are now defined, and the data_names() method returns a few parameter names.
  • The Sequence.GetValue() method now properly handles the Combo_list and single values.
  • The Combo_list.GetValue() method now returns a proper list of values rather than the string representation.
  • The Value GUI input element UpdateChoices() method now restores the current selection. This matches the Combo_list GUI element changes.
  • Renamed all of the ResetChoices() GUI methods to UpdateChoices(). This is because they are for updating a list while retaining the current selection.
  • The Combo_list GUI input element ResetChoices() method now remembers the current selection. This allows the selection to be restored when the element is updated, rather than resetting to the default value.
  • The GUI test _execute_uf() base method now handles non-keyword arguments, by converting them to keyword arguments.
  • All system test scripts are now executed through the base script_exec() method. This allows them to be run in the GUI tests as well.
  • 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: "$ relax --gui-test N_state_model".
  • 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: "$ relax -s N_state_model".
  • 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.
  • Converted the bmrb_rw.py system test script to use the new prompt self._execute_uf() method. The GUI test framework will need slight modification to use this script directly still.
  • Created a special private method for the prompt/script UIs for executing user functions. This self._execute_uf() method will be used for the sharing of scripts in the system and GUI tests.
  • Re-factored the system and GUI tests for code sharing. The GUI tests now can inherit tests from the system tests. This is done for the BMRB system tests,both of which now run as GUI tests. For this, a test class specific script_exec() method has been added. For the system tests, it passes the system tests script into the interpreter. For the GUI tests, it executes the script using the function locals so that the GUI test execute_uf() method is accessible.
  • Created a pair of Python object to GUI string and reverse conversion functions.
  • Spun out the GUI sting conversion functions from the gui.misc module into the new string_conv module. This set of functions is now large and diverse enough to justify a separate module, as the remaining three functions of gui.misc have nothing to do with GUI strings.
  • 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 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 user function page is now updated prior to setting any argument values. This is necessary for when a value from a pre-defined list is to be selected. Without the update,the list will be blank and the selection will not work.
  • The user function GUI objects can now be called with their argument values. This allows the argument to be set upon page creation.
  • The auto-generated file and dir selection dialogs now have wildcards and styles. This is provided through the new 'wiz_filesel_wildcard', 'wiz_filesel_style' and 'wiz_dirsel_style' user function argument arguments which are then passed on to the file and dir selection GUI elements. All user functions dealing with files and directories have been updated.
  • Updated the model-free auto-analysis GUI test for the new user function design.
  • The Value GUI element as a ComboBox can now handle input values which are not in the list. This allows user functions with the 'wiz_combo_choices' argument argument set and the 'wiz_read_only' arg arg of False to function. This is for the user to select from a list of pre-defined defaults, or input their own value.
  • The GUI tests base execute_uf() method now runs all user functions in synchronous mode. In combination with the previous gui_raise() change, this allows the GUI tests to actually fail when a RelaxError occurs.
  • The gui_raise() function now simply re-raises the RelaxError when in test mode. This allows the GUI test to properly fail.
  • Removed all of the dir user function arguments in the BMRB GUI test. These need to be part of the file argument, as the file and dir arguments are merged into one GUI file selection element.
  • The Combo_list GUI input element SetValue() method now handles single values and lists. This is required for the GUI tests.
  • The ComboBox data values are now set to the choices in the _init_() method if not given. This is required by the GUI tests, as the ResetChoices() method which does the same thing has not been called.
  • Shifted the combo_list GUI element into the gui.input_elements package.
  • The NOE auto-analysis GUI test has been converted to the new auto-generated user function design.
  • The NOE auto-analysis peak loading wizard has been converted to the new auto-generated user function design.
  • The prompt-based interpreter no longer sets the status.prompt_intro flag in the _init_() method. This flag is now set by the instantiation of the singleton status object. This prevents multiple calls to the Interpreter.__init__() method overwriting this flag. This fixes problems in the GUI tests.
  • 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 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.
  • Individual elements of the Sequence and Combo_list GUI element can now be set via the SetValue() method. The Sequence.SetValue() method now accepts the index arg, and this is passed onto the Combo_list.SetValue() method. The individual elements of the Sequence element still cannot be set via the index.
  • The free file format object can now be remotely controlled in the auto-generated user functions. This allows the test suite to set these values. For this, a special Free_file_format.SetValue()method was created, and the user function SetValue() method will call this when needed.
  • Removed the desc_short arguments to the Sequence* GUI input element classes. These do not exist.
  • The GUI test base execute_uf() method now only sets an argument if the argument has a corresponding GUI element.
  • Missing import causing all GUI tests to fail.
  • Edited all the module docstrings in the user_functions package.
  • Split up the gui.wizard_elements into a number of modules in the new gui.input_elements package.
  • The user function GUI page arguments are now updated after execution of the user function. This allows ComboBox lists to be dynamically updated, and is useful for when the user clicks on 'Apply'.
  • Created the Free_file_format.GetValue() method for returning a dictionary of arguments. This abstracts the GUI element's input fields.
  • Redesigned the set up of the user function arguments in the GUI pages. The wizard element_*() methods have been removed as these were pointless wrappers. The Uf_page add_contents() method now builds the argument GUI elements and stores them in the self.uf_args dictionary. The wizard methods Clear(), GetValue(), ResetChoices() and SetValue() have been shifted into the Uf_page class as these are only for the auto-generated user functions.
  • More independence for the wizard_elements - the height of the element must now be passed in as an argument.
  • Started to make the wizard_elements module classes independent of the wizard. The references to parent._div_left have been eliminated, this is now expected to be passed in by the parent which has that variable as the divider argument.
  • Converted the Interpreter.script() method into a proper user function. This pseudo user function was no longer functional after the auto-generation changes.
  • Redesigned the prompt help system for the auto-generated user functions. The documentation is closer to the style in the relax manual, including 'Synopsis' and 'Default' sections (i.e. see http://www.nmr-relax.com/manual/value_set.html).
  • The _build_doc() method now returns the documentation.
  • Eliminated the build_doc() function as this is no longer used. The new auto-generated user functions use a variant of this function as the _build_doc() method.
  • The uf_docstring functions are no longer private.
  • Renamed the 'base_class' module to 'uf_docstring'. This module now only contains functions relating to the auto-generated user function docstrings.
  • Shifted the prompt.base_class._strip_lead() function to relax_string.strip_lead().
  • Renamed the 'doc_builder' module to 'relax_string'. This will be used to hold more string related functions used throughout relax.
  • The status.text_width variable is now used to wrap the user function docstrings. This is for the prompt help system.
  • Shifted the prompt ps1, ps2 and ps3 variables into the 'interpreter' module. This is the only place they are used, so they are better there.
  • Eliminated the defunct User_fn_class base class.
  • The Sequence GUI elements now default to not being read-only.
  • The frq user function class submenu mnemonic is now 'f', conforming to the other user function classes.
  • Improved the keyboard mnemonics for the user function sub-menus. There are no longer any clashing letters.
  • The user function menu has been split in half as it was far too long.
  • The spin viewer window is now using the new build_uf_menu() function for its menus.
  • Shifted the user function menu creation into gui.uf_objects.build_uf_menus(). This will allow the code to be reused by the spin viewer window.
  • The GUI user function storage object now populated itself. This singleton object is no longer populated from the main GUI object, shifting the auto_generate()method code into the singleton instantiation. The user function _call_() method not extracts the main window GUI object for use as the parent of the wizards, if a parent is not supplied.
  • Removed the dependence on the old GUI user function system. Now the GUI user function storage object is used throughout.
  • The user function GUI objects can now be called with the 'parent' keyword argument. This allows a window other than the main relax window to be the parent, preventing the main window from always coming to the front.
  • Converted all of the GUI code to use the auto-generated user function design and storage object.
  • The Uf_page.create_page() method now accepts the 'sync' argument for deciding user function operation.
  • Shifted the user function page creation into the Uf_object.create_page() method. This will be useful for the creation of the special wizards which are composed of many user function pages strung together. In this case, the _call_() method which creates and packs the page into a Wiz_window instance can be bypassed.
  • The Spectral_error_type_page class now inherits from Wiz_page as UF_page has been eliminated.
  • Eliminated the gui.uf_pages package. This removes a lot of code and many modules! This has all been rendered useless by the auto-generated user functions.
  • Eliminated the old user function menu system. The auto-generated menu system is now complete, so the old system is now of no use.
  • Improved the argument description by making it more readable.
  • Renamed the 'user_functions' module to 'uf_objects'. This is due to a name clash with the 'user_functions' package.
  • Renamed the auto-generation user function module from 'objects' to 'user_functions'.
  • Clean up of the prompt.interpreter module. This includes the merging of the _auto_generate() method into _setup() and the clean up of the imports.
  • Created RelaxValListValError and RelaxNoneValListValError for the arg_check.is_val_or_list() function.
  • 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 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 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 tempe

Comments:

Message: 2030
Full announcement. (posted by bugman, Wed 13 Jun 2012 12:27:09 PM UTC)

The non-truncated version of this release announcement can be read at https://mail.gna.org/public/relax-users/2012-06/msg00008.html.

Thread Author Date
Full announcement.bugmanWed 13 Jun 2012 12:27:09 PM UTC
      Here is the MARC archive link.bugmanSun 21 Oct 2012 01:09:34 PM UTC

 

Post a followup to this message

You could post if you were logged in
Show feedback again

Back to the top


Powered by Savane 3.1-cleanup