Menu

SVN archive Commit Log


Commit Date  
[r27531] by bugman

Backported the relax 3.3.6 CHANGES file changes to trunk.

The command used was:
svn merge -r27529:27530 svn+ssh://bugman@.../svn/relax/tags/3.3.6 .

2015-02-04 18:24:23 Tree
[r27530] by bugman

Updated the CHANGES file for relax 3.3.6.

2015-02-04 18:23:24 Tree
[r27529] by bugman

Added the relax 3.3.6 PDF manual to the repository.

2015-02-04 18:01:48 Tree
[r27528] by bugman

Updated the version number to relax 3.3.6.

2015-02-04 17:49:13 Tree
[r27527] by bugman

relax version 3.3.6.

This is a minor feature and bugfix release. It includes the addition of the new
structure.sequence_alignment user function which can use the 'Central Star' multiple sequence
alignment algorithm or align based on residue numbers, saving the results in the relax data store.
The assembly of structural coordinates used by the structure.align, structure.atomic_fluctuations,
structure.com, structure.displacement, structure.find_pivot, structure.mean, structure.rmsd,
structure.superimpose and structure.web_of_motion user functions has been redesigned around this new
user function. It will use any pre-existing sequence alignments for the molecules of interest, but
default to a residue number based alignment if the structure.sequence_alignment user function has
not been used. This version also fixes a system test failure on Mac OS X and Iinf parameter text
files and Grace graphs are produced by the relaxation curve-fitting auto-analysis for the inversion
recovery and saturation recovery experiment types.

2015-02-04 17:47:33 Tree
[r27526] by bugman

Fixes for the package checking unit tests on MS Windows for the target_functions package.

The compiled relaxation curve-fitting file is called target_functions\relax_fit.pyd on MS Windows.
The package checking was only taking into account *.so compiled files and not *.pyd file.

2015-02-04 17:32:30 Tree
[r27525] by bugman

Merged revisions 27440-27497,27500-27501,27503-27517 via svnmerge from
svn+ssh://bugman@.../svn/relax/trunk

........
r27440 | bugman | 2015-02-02 16:59:45 +0100 (Mon, 02 Feb 2015) | 3 lines

Copyright update.
........
r27441 | bugman | 2015-02-02 17:08:08 +0100 (Mon, 02 Feb 2015) | 5 lines

Fix for the oblate spheroid diffusion relaxation data.

The diffusion parameters are constrained as Dx <= Dy <= Dz.
........
r27442 | bugman | 2015-02-02 17:14:55 +0100 (Mon, 02 Feb 2015) | 6 lines

More fixes for the Structure.test_create_diff_tensor_pdb_oblate system test.

The initial Diso value is now set to the real final Diso, and the PDB file contents have been
updated for the fixed oblate spheroidal diffusion relaxation data.
........
r27443 | bugman | 2015-02-02 17:25:22 +0100 (Mon, 02 Feb 2015) | 6 lines

Updates for many of the Diffusion_tensor system tests.

This is due to the changed directory names in test_suite/shared_data/diffusion_tensor/. The
ds.diff_dir variable has been introduced to point to the correct data directory.
........
r27444 | bugman | 2015-02-02 23:34:27 +0100 (Mon, 02 Feb 2015) | 14 lines

Big bug fix for the GUI tests on MS Windows systems.

On MS Windows systems, the GUI tests were unable to complete without crashing. This is because each
GUI element requires one 'User object', and MS Windows has a maximum limit of 10,000 of these
objects. The GUI tests were taking more than 10,000 and then Windows would say - relax, you die
now.

The solution is that after each GUI test, all user function windows are destroyed. The user
function page is a wx.Panel object, so this requires a Destroy() call. But the window is a Uf_page
instance which inherits from Wiz_page which inherits from wx.Dialog. Calling Destroy() on MS
Windows and Linux works fine, but is fatal on Mac OS X systems. So the solution is to call Close()
instead.
........
r27445 | bugman | 2015-02-03 09:20:10 +0100 (Tue, 03 Feb 2015) | 13 lines

Large improvement for the GUI test tearDown() clean up method, fixing the tests on wxPython 2.8.

The user function window destruction has been shifted into a new clean_up_windows() method which is
executed via wx.CallAfter() to avoid racing conditions. In addition, the spin viewer window is
destroyed between tests.

The spin viewer window change allows the GUI tests to pass on wxPython 2.8 again. This also allows
the GUI tests to progress much further on Mac OS X systems before they crash again for some other
reason. This could simply be hiding a problem in the spin viewer window. However it is likely to
be a racing problem only triggered by the super fast speed of the GUI tests and a normal user would
never be able to operate the GUI on the millisecond timescale and hence may never see it.
........
r27446 | bugman | 2015-02-03 09:37:34 +0100 (Tue, 03 Feb 2015) | 19 lines

Reverted r27241, the wxPython 2.8 warning.

The command used was:
svn merge -r27241:r27240 .

This was discussed at http://thread.gmane.org/gmane.science.nmr.relax.devel/7502/focus=7512.

.....
r27241 | bugman | 2015-01-20 15:04:18 +0100 (Tue, 20 Jan 2015) | 6 lines
Changed paths:
M /trunk/dep_check.py

Added a RelaxWarning printout to the dep_check module if wxPython 2.8 or less is encountered.

This follows from http://thread.gmane.org/gmane.science.nmr.relax.devel/7502. The warning text is
simply written to STDERR as relax starts.
.....
........
r27447 | bugman | 2015-02-03 09:41:12 +0100 (Tue, 03 Feb 2015) | 19 lines

Reverted r27243, the skipping of the GUI tests on wxPython 2.8.

The command used was:
svn merge -r27243:r27242 .

This was discussed at http://thread.gmane.org/gmane.science.nmr.relax.devel/7502/focus=7512.

.....
r27243 | bugman | 2015-01-20 15:13:19 +0100 (Tue, 20 Jan 2015) | 6 lines
Changed paths:
M /trunk/test_suite/test_suite_runner.py

The GUI tests are now skipped for wxPython version <= 2.8 due to bugs causing fatal segfaults.

This follows from http://thread.gmane.org/gmane.science.nmr.relax.devel/7502. These wxPython
versions are simply too buggy.
.....
........
r27448 | bugman | 2015-02-03 09:46:40 +0100 (Tue, 03 Feb 2015) | 20 lines

Reverted r27325, the General.test_bug_23187_residue_delete_gui GUI test is no longer disabled.

The command was:
svn merge -r27325:r27324 .

The 'Bus Error' on Mac OS X due to this test is no longer an issue, as the spin viewer window is now
destroyed after each GUI test.

.....
r27325 | bugman | 2015-01-27 11:35:39 +0100 (Tue, 27 Jan 2015) | 6 lines
Changed paths:
M /trunk/test_suite/gui_tests/general.py

Disabled the General.test_bug_23187_residue_delete_gui GUI test.

This is essential as a wxPython bug in Mac OS X systems causes this test to trigger a 'Bus Error'
every time the GUI tests are run, killing relax.
.....
........
r27449 | bugman | 2015-02-03 10:07:09 +0100 (Tue, 03 Feb 2015) | 9 lines

Created a special Destroy() method for the spin viewer window.

This is for greater control of the spin viewer window destruction. First the methods registered
with the observer objects are unregistered, then the children of the spin viewer window are
destroyed, and finally the main spin viewer window is destroyed. This change saves a lot of GUI
resources in the GUI tests (there is a large reduction in 'User Objects' and 'GDI Objects' used on
MS Windows systems, hence an equivalent resource reduction on other operating systems).
........
r27450 | bugman | 2015-02-03 10:14:45 +0100 (Tue, 03 Feb 2015) | 16 lines

Fix for the GUI test clean_up_windows() method called from tearDown().

The user function window (Wiz_window) must be closed before the user function page (Uf_page), so
that the Wiz_window._handler_close() can still operate the methods of the Uf_page. This avoids a
huge quantity of these errors:

Traceback (most recent call last):
File "/data/relax/relax-trunk/gui/wizards/wiz_objects.py", line 723, in _handler_close
self._pages[self._current_page].on_next()
File "/usr/lib64/python2.7/site-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 14615, in
__getattr__
raise PyDeadObjectError(self.attrStr % self._name)
wx._core.PyDeadObjectError: The C++ part of the Uf_page object has been deleted, attribute access no
longer allowed.
........
r27451 | bugman | 2015-02-03 10:26:56 +0100 (Tue, 03 Feb 2015) | 6 lines

Simplification of the Dead_uf_pages.test_mol_create GUI test.

The RelaxError cannot be caught from the GUI user function window, therefore the try statement has
been eliminated.
........
r27452 | bugman | 2015-02-03 10:48:10 +0100 (Tue, 03 Feb 2015) | 6 lines

More memory saving improvements for the GUI test suite tearDown() method.

The clean_up_windows() method now loops through all top level windows (frames, dialogs, panels,
etc.) and calls their Destroy() method.
........
r27453 | bugman | 2015-02-03 12:11:34 +0100 (Tue, 03 Feb 2015) | 5 lines

Created the gui.uf_objects.Uf_object.Destroy() method.

This will be used to cleanly destroy the user function object.
........
r27454 | bugman | 2015-02-03 12:17:11 +0100 (Tue, 03 Feb 2015) | 6 lines

Modified the GUI test suite _execute_uf() method.

This user function execution method now calls the user function GUI object Destroy() method to clean
up all GUI objects. This should save memory for GUI objects in the GUI test suite.
........
r27455 | bugman | 2015-02-03 12:20:51 +0100 (Tue, 03 Feb 2015) | 7 lines

Modified the GUI test suite tearDown() method.

The clean_up_windows() method called by tearDown() now prints out a lost of all of the living
windows instead of trying to destroy them (which causes the running of the GUI tests in the GUI to
cause the GUI to be destroyed). The printouts will be used for debugging purposes.
........
r27456 | bugman | 2015-02-03 12:22:00 +0100 (Tue, 03 Feb 2015) | 3 lines

Import fix and copyright update.
........
r27457 | bugman | 2015-02-03 12:25:11 +0100 (Tue, 03 Feb 2015) | 7 lines

Fixes for the custom Wiz_window.Destroy() method.

This will now first close the wizard window via the Close() method to make sure all of the wizard
pages are properly updated. In the end the wizard DestroyChildren() method is called to clean up
all child wx objects, and finally Destroy() is called to eliminate the wizard GUI object.
........
r27458 | bugman | 2015-02-03 12:28:05 +0100 (Tue, 03 Feb 2015) | 5 lines

The GUI test suite tearDown() method now calls the user function GUI wizard Destroy() method.

This is for better handling of user function elimination.
........
r27459 | bugman | 2015-02-03 12:29:02 +0100 (Tue, 03 Feb 2015) | 6 lines

Fixes for the user function GUI object Destroy() method.

This matches the code just deleted in the GUI test suite tearDown() method for handing the user
function page object.
........
r27460 | bugman | 2015-02-03 12:31:23 +0100 (Tue, 03 Feb 2015) | 6 lines

More fixes for the user function GUI object Destroy() method.

This page GUI object is destroyed by the wizard window Destroy() method, so destroying again causes
wxPython runtime errors.
........
r27461 | bugman | 2015-02-03 12:37:10 +0100 (Tue, 03 Feb 2015) | 5 lines

Spacing printout for the list of still open GUI window elements.

This is for the GUI test tearDown() method.
........
r27462 | bugman | 2015-02-03 14:11:32 +0100 (Tue, 03 Feb 2015) | 6 lines

Shifted the printouts from the GUI tests suite clean_up_windows() method to the tearDown() method.

This change means that the printouts are not within a wx.CallAfter() call, but rather at the end of
the tearDown() method just prior to starting the next test.
........
r27463 | bugman | 2015-02-03 14:51:32 +0100 (Tue, 03 Feb 2015) | 8 lines

Simplification of the GUI analysis post_reset() method.

This now uses the delete_all() and hence delete_analysis() methods to clean up the GUI. The reset
argument has been added to skip the manipulation of relax data store data, as the data store is
empty after a reset. However the calling of the delete_analysis() method now ensures that the
analysis specific delete() method is now called so that the GUI elements can be properly destroyed.
........
r27464 | bugman | 2015-02-03 14:56:21 +0100 (Tue, 03 Feb 2015) | 6 lines

Proper destruction of the peak analysis wizard of the NOE GUI analysis.

The peak wizard's Destroy() method is now called and the self.peak_wizard object deleted in the NOE
GUI analysis delete() method.
........
r27465 | bugman | 2015-02-03 14:58:20 +0100 (Tue, 03 Feb 2015) | 7 lines

Improved memory management in the NOE GUI analysis peak_wizard_launch() method.

This method was just overwriting the self.peak_wizard object with a new object. However this does
not destroy the wxPython window. Now if a peak wizard is detected, its Destroy() method is called
before overwriting the object.
........
r27466 | bugman | 2015-02-03 15:02:41 +0100 (Tue, 03 Feb 2015) | 7 lines

Improved GUI clean up when terminating GUI tests.

The clean_up_windows() method, called from tearDown(), now also destroys the pipe editor window, the
results viewer window, and the prompt window. This ensures that all of the major relax windows are
destroyed between GUI tests.
........
r27467 | bugman | 2015-02-03 15:09:16 +0100 (Tue, 03 Feb 2015) | 8 lines

Improved memory management in the relaxation curve-fitting GUI analysis.

The peak intensity loading wizard is now properly destroyed. This is both via the delete() function
for terminating the analysis calling the wizard Delete() method, and in the peak_wizard_launch()
method calling the wizard Delete() method prior to overwriting the self.peak_wizard object with a
new GUI wizard.
........
r27468 | bugman | 2015-02-03 15:12:29 +0100 (Tue, 03 Feb 2015) | 3 lines

Copyright update to 2015.
........
r27469 | bugman | 2015-02-03 15:16:17 +0100 (Tue, 03 Feb 2015) | 8 lines

Improved memory management in the model-free GUI analysis.

The dipole-dipole interaction wizard is now properly destroyed. This is both via the delete()
function for terminating the analysis calling the wizard Delete() method, and in the
setup_dipole_pair() method calling the wizard Delete() method prior to overwriting the
self.dipole_wizard object with a new GUI wizard.
........
r27470 | bugman | 2015-02-03 15:23:32 +0100 (Tue, 03 Feb 2015) | 6 lines

Improved memory management in the model-free GUI analysis.

The analysis mode selection window (a wx.Dialog) is now being destroyed in the analysis delete()
method. This appears to work on Linux, Windows, and Mac systems.
........
r27471 | bugman | 2015-02-03 15:27:54 +0100 (Tue, 03 Feb 2015) | 5 lines

Improved memory management in the model-free GUI analysis.

The local tm and model-free model windows are now destroyed in the GUI analysis delete() method.
........
r27472 | bugman | 2015-02-03 15:38:48 +0100 (Tue, 03 Feb 2015) | 7 lines

Improved termination of the GUI tests.

The clean_up_windows() method now calls the results viewer and pipe editor window handler_close()
methods. This ensures that all observer objects are cleared out so that the methods of the dead
windows can no longer be called.
........
r27473 | bugman | 2015-02-03 15:44:55 +0100 (Tue, 03 Feb 2015) | 6 lines

Fix for the previous commit (r27472).

Calls to wx.Yield() are required to flush the calls on the observer objects after unregisteristing
them and deleting the results and pipe editor windows.
........
r27474 | bugman | 2015-02-03 15:47:46 +0100 (Tue, 03 Feb 2015) | 8 lines

Improved memory management in the relaxation dispersion GUI analysis.

The peak intensity loading wizard is now properly destroyed. This is both via the delete() function
for terminating the analysis calling the wizard Delete() method, and in the peak_wizard_launch()
method calling the wizard Delete() method prior to overwriting the self.peak_wizard object with a
new GUI wizard.
........
r27475 | bugman | 2015-02-03 15:54:42 +0100 (Tue, 03 Feb 2015) | 3 lines

Created custom Destroy() methods for the pipe editor and results viewer GUI windows.
........
r27476 | bugman | 2015-02-03 15:57:54 +0100 (Tue, 03 Feb 2015) | 5 lines

Improved memory management in the relaxation dispersion GUI analysis.

The dispersion model list window is now destroyed in the GUI analysis delete() method.
........
r27477 | bugman | 2015-02-03 16:01:46 +0100 (Tue, 03 Feb 2015) | 6 lines

Fixes for the custom Destroy() methods for the pipe editor and results viewer GUI windows.

The event argument is now a keyword argument which defaults to None. This allows the Destroy()
methods to be called without arguments.
........
r27478 | bugman | 2015-02-03 16:13:34 +0100 (Tue, 03 Feb 2015) | 5 lines

Temporary disablement of the results viewer window destruction in the GUI tests.

This currently, for some unknown reason, causes segfault crashes of the GUI tests on Linux systems.
........
r27479 | bugman | 2015-02-03 16:30:52 +0100 (Tue, 03 Feb 2015) | 9 lines

Changes for how the main GUI windows are destroyed by the GUI test tearDown() method.

These changes revert some of the code of previous commits. The recently introduced pipe editor and
results viewer windows Delete() methods have been deleted. Instead the Close() methods are called
in the tearDown() method to unregister the windows from the observer objects, followed by a
wx.Yield() call to flush the wx events, and then the clean_up_windows() GUI test base method is
called within a wx.CallAfter() call. This avoids the racing induced segfaults in the GUI tests.
........
r27480 | bugman | 2015-02-03 16:38:38 +0100 (Tue, 03 Feb 2015) | 6 lines

Improved memory management in the spin viewer window.

The spin loading wizard is now destroyed in the Destroy() method as well as before reinitialising
the wizard in the load_spins_wizard() method.
........
r27481 | bugman | 2015-02-03 16:44:21 +0100 (Tue, 03 Feb 2015) | 5 lines

Wizard window objects in the GUI can now be named.

This will help with debugging the GUI memory usage.
........
r27482 | bugman | 2015-02-03 16:45:30 +0100 (Tue, 03 Feb 2015) | 3 lines

The GUI tests tearDown() method now prints out the Wizard windows names, if not destroyed.
........
r27483 | bugman | 2015-02-03 16:49:08 +0100 (Tue, 03 Feb 2015) | 3 lines

The GUI tests tearDown() method now prints out the Wizard windows title instead of name.
........
r27484 | bugman | 2015-02-03 16:50:56 +0100 (Tue, 03 Feb 2015) | 16 lines

Reverted r27481, the naming of Wizard windows. Names are not necessary they already have titles.

The command used was:
svn merge -r27481:r27480 .

.....
r27481 | bugman | 2015-02-03 16:44:21 +0100 (Tue, 03 Feb 2015) | 5 lines
Changed paths:
M /trunk/gui/wizards/wiz_objects.py

Wizard window objects in the GUI can now be named.

This will help with debugging the GUI memory usage.
.....
........
r27485 | bugman | 2015-02-03 16:52:20 +0100 (Tue, 03 Feb 2015) | 3 lines

The Wizard window title is now being stored as a class instance variable.
........
r27486 | bugman | 2015-02-03 17:00:00 +0100 (Tue, 03 Feb 2015) | 7 lines

Improved memory management in the relaxation data list GUI element, as well as the base list object.

The relaxation data loading wizard is now destroyed in the Base_list.delete() method, or any wizard
for that matter. In addition, the relaxation data loading wizard is destroyed before reinitialising
the wizard in the wizard_exec() method.
........
r27487 | bugman | 2015-02-03 17:10:33 +0100 (Tue, 03 Feb 2015) | 7 lines

Better memory management for the missing data dialog in the GUI analyses.

The dialog is now stored as the class variable missing_data, and then is destroyed in the analysis
delete() method. Without this, the wxPython dialog would remain in memory for the lifetime of the
program.
........
r27488 | bugman | 2015-02-03 17:20:14 +0100 (Tue, 03 Feb 2015) | 6 lines

Improved memory management for the Sequence and Sequence_2D input GUI elements.

These are mainly used in the user function GUI windows. The dialogs are now destroyed before a
second is opened.
........
r27489 | bugman | 2015-02-03 17:29:32 +0100 (Tue, 03 Feb 2015) | 6 lines

Improved memory management for the GUI user function windows.

The Destroy() method will now destroy any Sequence or Sequence_2D windows used for the user function
arguments.
........
r27490 | bugman | 2015-02-03 17:37:24 +0100 (Tue, 03 Feb 2015) | 6 lines

The relax prompt window is now being destroyed by the GUI test suite tearDown() method.

The window is first closed in the tearDown() method and then destroyed in the clean_up_windows()
method.
........
r27491 | bugman | 2015-02-03 17:58:51 +0100 (Tue, 03 Feb 2015) | 7 lines

Added memory management checking to the GUI test suite tearDown() method.

If any top level windows are present, excluding the main GUI window and the relax controller, then a
RelaxError will be raised. Such a check will significantly help in future GUI coding, as now there
will be feedback if not all windows are properly destroyed.
........
r27492 | bugman | 2015-02-03 18:09:35 +0100 (Tue, 03 Feb 2015) | 6 lines

Popup menus are now properly destroyed in the GUI tests.

In many instances, the wx.Menu.Destroy() method was only being called when the GUI is shown. This
causes memory leaking in the GUI tests.
........
r27493 | bugman | 2015-02-03 18:20:59 +0100 (Tue, 03 Feb 2015) | 6 lines

Changed the title for the user function GUI windows.

To better help identify what the window is, the title is now the user function name together with
text saying that it is a user function.
........
r27494 | bugman | 2015-02-03 18:37:24 +0100 (Tue, 03 Feb 2015) | 7 lines

Removed the wx.CallAfter() call in the GUI tests tearDown() method.

This was used to call the clean_up_windows() method. However the value of wx.Thread_IsMain() shows
that the tearDown() method executes in the main GUI thread. Therefore the wx.CallAfter() call for
avoiding racing conditions is not needed.
........
r27495 | bugman | 2015-02-03 18:47:41 +0100 (Tue, 03 Feb 2015) | 6 lines

Fix for the GUI tests clean_up_windows() tearDown method.

After destroying all of the main GUI windows, a wx.Yield() call is made to flush the wxPython event
queue. This seems to help with the memory management.
........
r27496 | bugman | 2015-02-03 19:39:48 +0100 (Tue, 03 Feb 2015) | 5 lines

Temporary disabling of the memory management check in the GUI tests tearDown() method.

For some reason, it appears as if it is not possible to destroy wx Windows on MS Windows.
........
r27497 | bugman | 2015-02-03 19:59:07 +0100 (Tue, 03 Feb 2015) | 6 lines

Created the relax GUI prompt Destroy() method.

This is used to cleanly destroy the GUI prompt by first unregistering with the observer objects,
destroying then deleting the wx.py.shell.Shell instance, and finally destroying the window.
........
r27500 | bugman | 2015-02-04 09:30:58 +0100 (Wed, 04 Feb 2015) | 3 lines

Modified the manual_c_module.py developer script so that the path can be supplied on the command line.
........
r27501 | bugman | 2015-02-04 09:34:10 +0100 (Wed, 04 Feb 2015) | 3 lines

Removed some unused imports, as found by devel_scripts/find_unused_imports.py.
........
r27503 | bugman | 2015-02-04 10:14:28 +0100 (Wed, 04 Feb 2015) | 5 lines

Added a copyright notice to the memory_leak_test_relax_fit.py development script.

This is to know how old the script is, to see how out of date it is in the future.
........
r27504 | bugman | 2015-02-04 11:15:48 +0100 (Wed, 04 Feb 2015) | 7 lines

Created the memory_leak_test_GUI_uf.py development script.

This is to help in tracking down memory leaks in the relax GUI user functions. Instead of using a
debugging Python version and guppy (wxPython doesn't seem to work with these), the pympler Python
package and its muppy module is used to produce a memory usage printout.
........
r27505 | bugman | 2015-02-04 11:30:11 +0100 (Wed, 04 Feb 2015) | 3 lines

Clean up of the memory_leak_test_GUI_uf.py development script.
........
r27506 | bugman | 2015-02-04 13:57:37 +0100 (Wed, 04 Feb 2015) | 6 lines

Created the new devel_scripts/memory_management/ directory.

This will be used for holding all of the memory C module leak detection, GUI object leak detection,
memory management, etc. development scripts.
........
r27507 | bugman | 2015-02-04 13:58:17 +0100 (Wed, 04 Feb 2015) | 3 lines

Shifted the memory_leak_test_GUI_uf.py script to devel_scripts/memory_management/GUI_uf_minimise_execute.py.
........
r27508 | bugman | 2015-02-04 14:12:22 +0100 (Wed, 04 Feb 2015) | 6 lines

Created a base class for the memory management scripts for the GUI user functions.

The core of the GUI_uf_minimise_execute.py script has been converted into the GUI_base.py base class
module. This will allow for new GUI user function testing scripts to be created.
........
r27509 | bugman | 2015-02-04 14:15:25 +0100 (Wed, 04 Feb 2015) | 3 lines

Removal of unused imports from the GUI user function memory testing scripts.
........
r27510 | bugman | 2015-02-04 14:18:26 +0100 (Wed, 04 Feb 2015) | 3 lines

Created a script for testing the memory management when calling the time GUI user function.
........
r27511 | bugman | 2015-02-04 15:32:44 +0100 (Wed, 04 Feb 2015) | 19 lines

Large memory management improvement for the relax GUI wizards and GUI user functions.

The pympler.muppy based memory management scripts in devel_scripts/memory_management for testing the
GUI user function windows was showing that for each GUI user function call, 28 wx._core.BoxSizer
elements were remaining in memory. This was traced back to the gui.wizards.wiz_objects.Wiz_window
class, specifically the self._page_sizers and self._button_sizers lists storing wx.BoxSizer
instances.

The problem was that 16 page sizers and 16 button sizers were initialised each time for later use,
however the add_page() method only added a small subset of these to the self._main_sizer wx.BoxSizer
object. But the Destroy() method was only capable of destroying the wx.BoxSizer instances
associated with another wxPython object. The fix was to add all page and button sizers to the
self._main_sizer object upon initialisation.

This will solve many memory issues in the GUI, especially in the GUI tests on Mac OS X systems
causing 'memory error' or 'bus error' messages and on MS Windows due to 'USER Object' and 'GDI
object' limitations.
........
r27512 | bugman | 2015-02-04 15:49:30 +0100 (Wed, 04 Feb 2015) | 5 lines

The maximum number of pages in the GUI wizard is no longer hardcoded.

The max_pages argument has been added to allow this value to be changed.
........
r27513 | bugman | 2015-02-04 16:19:54 +0100 (Wed, 04 Feb 2015) | 10 lines

Fix for GUI wizards and GUI user functions.

The recent memory management changes caused the wizard windows to have an incorrect layout so that
the wizard pages were not visible. Reperforming a layout of the GUI elements did not help. The
solution is to not initialise sets of max_pages of wx.BoxSizer elements in the wizard __init__()
method, but to generate and append these dynamically via the add_page() method. The change now
means that there are no longer multiple unused wx.BoxSizer instances generated for each wizard
window created.
........
r27514 | bugman | 2015-02-04 16:22:22 +0100 (Wed, 04 Feb 2015) | 3 lines

Removed a debugging printout.
........
r27515 | bugman | 2015-02-04 16:28:04 +0100 (Wed, 04 Feb 2015) | 6 lines

Fix for the GUI wizard _go_next() method.

The way to determine if there are no more pages needs to be changed, as there are now no empty list
elements at the end of the wizard storage objects.
........
r27516 | bugman | 2015-02-04 16:35:58 +0100 (Wed, 04 Feb 2015) | 5 lines

Another fix for the now variable sized wizard page list.

This time the fix is in the GUI user function __call__() method.
........
r27517 | bugman | 2015-02-04 16:47:44 +0100 (Wed, 04 Feb 2015) | 5 lines

Fix for the default grid_inc argument for the relaxation curve-fitting auto-analysis.

This needs to be an integer.
........

2015-02-04 16:26:53 Tree
[r27524] by bugman

Merged revisions 27439 via svnmerge from
svn+ssh://bugman@.../svn/relax/trunk

........
r27439 | bugman | 2015-02-02 16:58:22 +0100 (Mon, 02 Feb 2015) | 9 lines

The Structure.test_create_diff_tensor_pdb_oblate now uses oblate diffusion relaxation data.

This fixes bug #23232 (https://gna.org/bugs/?23232), the failure of this system test on Mac OS X.
The problem was that the system test was previously using relaxation data for prolate spheroidal
diffusion and fitting an oblate tensor to that data. This caused the solution to be slightly
different on different CPUs, operating systems, Python versions, etc. and hence the PDB file
representation of the diffusion would be slightly different.
........

2015-02-04 16:17:13 Tree
[r27523] by bugman

Merged revisions 27248-27291,27293-27319,27321-27323,27325,27331,27336-27368,27370-27371,27373-27375,27377-27424,27426-27438 via svnmerge from
svn+ssh://bugman@.../svn/relax/trunk

........
r27248 | bugman | 2015-01-21 09:54:28 +0100 (Wed, 21 Jan 2015) | 6 lines

Better error handling in the structure.align user function.

If no common atoms can be found between the structures, a RelaxError is now raised for better user
feedback.
........
r27249 | bugman | 2015-01-21 10:07:23 +0100 (Wed, 21 Jan 2015) | 6 lines

Created an empty lib.sequence_alignment relax library package.

This may be used in the future for implementing more advanced structural alignments (the current
method is simply to skip missing atoms, sequence numbering changes are not handled).
........
r27250 | bugman | 2015-01-21 11:23:41 +0100 (Wed, 21 Jan 2015) | 3 lines

Added the sequence_alignment package to the lib package __all__ list.
........
r27251 | bugman | 2015-01-21 11:25:26 +0100 (Wed, 21 Jan 2015) | 3 lines

Added the unit testing infrastructure for the new lib.sequence_alignment package.
........
r27252 | bugman | 2015-01-21 11:37:37 +0100 (Wed, 21 Jan 2015) | 6 lines

Implementation of the Needleman-Wunsch sequence alignment algorithm.

This is located in the lib.sequence_alignment.needleman_wunsch module. This is implemented as
described in the Wikipedia article https://en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithm.
........
r27253 | bugman | 2015-01-21 11:39:24 +0100 (Wed, 21 Jan 2015) | 8 lines

Created a unit test for checking the Needleman-Wunsch sequence alignment algorithm.

This uses the DNA data from the example in the Wikipedia article at
https://en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithm. The test shows that the
implementation of the lib.sequence_alignment.needleman_wunsch.needleman_wunsch_align() function is
correct.
........
r27254 | bugman | 2015-01-21 12:15:53 +0100 (Wed, 21 Jan 2015) | 6 lines

Created the lib.sequence_alignment.substitution_matrices module.

This is for storing substitution matrices for use in sequence alignment. The module currently only
includes the BLOSSUM62 matrix.
........
r27255 | bugman | 2015-01-21 12:21:53 +0100 (Wed, 21 Jan 2015) | 3 lines

Corrected the spelling of the BLOSUM62 matrix in lib.sequence_alignment.substitution_matrices.
........
r27256 | bugman | 2015-01-21 14:03:24 +0100 (Wed, 21 Jan 2015) | 3 lines

Fix for the lib.sequence_alignment.substitution_matrices.BLOSUM62_SEQ string.
........
r27257 | bugman | 2015-01-21 15:36:43 +0100 (Wed, 21 Jan 2015) | 7 lines

Modification of the Needleman-Wunsch sequence alignment algorithm implementation.

This is in the lib.sequence_alignment.needleman_wunsch functions. Scoring matrices are now
supported, as well as a user supplied non-integer gap penalty. The algorithm for walking through
the traceback matrix has been fixed for a bug under certain conditions.
........
r27258 | bugman | 2015-01-21 15:40:56 +0100 (Wed, 21 Jan 2015) | 9 lines

Created the lib.sequence_alignment.align_protein module for the sequence alignment of proteins.

This general module currently implements the align_pairwise() function for the pairwise alignment of
protein sequences. It provides the infrastructure for specifying gap starting and extension
penalties, choosing the alignment algorithm (currently only the Needleman-Wunsch sequence alignment
algorithm as 'NW70'), and choosing the substitution matrix (currently only BLOSUM62). The function
provides lots of printouts for user feedback.
........
r27259 | bugman | 2015-01-21 15:52:03 +0100 (Wed, 21 Jan 2015) | 6 lines

Created a unit test for lib.sequence_alignment.align_protein.align_pairwise().

This is to test the pairwise alignment of two protein sequences using the Needleman-Wunsch sequence
alignment algorithm, BLOSUM62 substitution matrix, and gap penalty of 10.0.
........
r27260 | bugman | 2015-01-21 15:58:43 +0100 (Wed, 21 Jan 2015) | 5 lines

Added more printouts to the Test_align_protein.test_align_pairwise unit test.

This is the test of the module _lib._sequence_alignment.test_align_protein.
........
r27261 | bugman | 2015-01-21 15:59:28 +0100 (Wed, 21 Jan 2015) | 3 lines

Fix for the Needleman-Wunsch sequence alignment algorithm when the substitution matrix is absent.
........
r27262 | bugman | 2015-01-21 16:01:27 +0100 (Wed, 21 Jan 2015) | 5 lines

The lib.sequence_alignment.align_protein.align_pairwise() function now returns data.

This includes both alignment strings as well as the gap matrix.
........
r27263 | bugman | 2015-01-22 15:45:25 +0100 (Thu, 22 Jan 2015) | 3 lines

Annotated the BLOSUM62 substitution matrix with the amino acid codes for easy reading.
........
r27264 | bugman | 2015-01-22 15:53:43 +0100 (Thu, 22 Jan 2015) | 5 lines

Updated the gap penalties in the Test_align_protein.test_align_pairwise unit test.

This is from the unit test module _lib._sequence_alignment.test_align_protein.
........
r27265 | bugman | 2015-01-22 15:57:15 +0100 (Thu, 22 Jan 2015) | 8 lines

Modified the Needleman-Wunsch sequence alignment algorithm.

The previous attempt was buggy. The algorithm has been modified to match the logic of the GPL
licenced EMBOSS software (http://emboss.sourceforge.net/) to allow for gap opening and extension
penalties, as well as end penalties. No code was copied, rather the algorithm for creating the
scoring and penalty matrices, as well as the traceback matrix.
........
r27266 | bugman | 2015-01-22 16:01:39 +0100 (Thu, 22 Jan 2015) | 3 lines

Added a DNA similarity matrix to lib.sequence_alignment.substitution_matrices.
........
r27267 | bugman | 2015-01-22 16:09:34 +0100 (Thu, 22 Jan 2015) | 6 lines

Added sanity checks to the Needleman-Wunsch sequence alignment algorithm.

The residues of both sequences are now checked in needleman_wunsch_align() to make sure that they
are present in the substitution matrix.
........
r27268 | bugman | 2015-01-22 16:34:06 +0100 (Thu, 22 Jan 2015) | 5 lines

Added the NUC 4.4 nucleotide substitution matrix from ftp://ftp.ncbi.nih.gov/blast/matrices/.

Uracil was added to the table as a copy to T.
........
r27269 | bugman | 2015-01-22 16:35:49 +0100 (Thu, 22 Jan 2015) | 5 lines

Added the header from ftp://ftp.ncbi.nih.gov/blast/matrices/BLOSUM62.

This is to document the BLOSUM62 substitution matrix.
........
r27270 | bugman | 2015-01-22 16:39:34 +0100 (Thu, 22 Jan 2015) | 6 lines

Added the PAM 250 amino acid substitution matrix.

This was taken from ftp://ftp.ncbi.nih.gov/blast/matrices/PAM250 and added to
lib.sequence_alignment.substitution_matrices.PAM250.
........
r27271 | bugman | 2015-01-22 16:55:21 +0100 (Thu, 22 Jan 2015) | 6 lines

Modified the Test_needleman_wunsch.test_needleman_wunsch_align_DNA unit test to pass.

This is from the unit test module _lib._sequence_alignment.test_needleman_wunsch. The DNA sequences
were simplified so that the behaviour can be better predicted.
........
r27272 | bugman | 2015-01-22 16:56:35 +0100 (Thu, 22 Jan 2015) | 6 lines

Created the Test_needleman_wunsch.test_needleman_wunsch_align_NUC_4_4 unit test.

This is in the unit test module _lib._sequence_alignment.test_needleman_wunsch. This tests the
Needleman-Wunsch sequence alignment for two DNA sequences using the NUC 4.4 matrix.
........
r27273 | bugman | 2015-01-22 17:00:03 +0100 (Thu, 22 Jan 2015) | 7 lines

Created a unit test for demonstrating a failure in the Needleman-Wunsch sequence alignment algorithm.

The test is Test_needleman_wunsch.test_needleman_wunsch_align_NUC_4_4b from the
_lib._sequence_alignment.test_needleman_wunsch module. The problem is that the start of the
alignment is truncated if any gaps are present.
........
r27274 | bugman | 2015-01-22 17:07:58 +0100 (Thu, 22 Jan 2015) | 5 lines

Fix for the Needleman-Wunsch sequence alignment algorithm.

The start of the sequences are no longer truncated when starting gaps are encountered.
........
r27275 | bugman | 2015-01-22 17:20:07 +0100 (Thu, 22 Jan 2015) | 5 lines

The needleman_wunsch_align() function now accepts the end gap penalty arguments.

These are passed onto the needleman_wunsch_matrix() function.
........
r27276 | bugman | 2015-01-22 17:21:34 +0100 (Thu, 22 Jan 2015) | 3 lines

Added the end gap penalty arguments to lib.sequence_alignment.align_protein.align_pairwise().
........
r27277 | bugman | 2015-01-22 17:30:20 +0100 (Thu, 22 Jan 2015) | 9 lines

Created the Structure.test_align_CaM_BLOSUM62 system test.

This will be used for expanding the functionality of the structure.align user function to perform
true sequence alignment via the new lib.sequence_alignment package. The test aligns 3 calmodulin
(CaM) structures from different organisms, hence the sequence numbering is different and the current
structure.align user function design fails. The structure.align user function has been expanded in
the test to include a number of arguments for advanced sequence alignment.
........
r27278 | bugman | 2015-01-22 18:01:40 +0100 (Thu, 22 Jan 2015) | 5 lines

Added support for the PAM250 substitution matrix to the protein pairwise sequence alignment function.

This is the function lib.sequence_alignment.align_protein.align_pairwise().
........
r27279 | bugman | 2015-01-22 19:54:17 +0100 (Thu, 22 Jan 2015) | 6 lines

Bug fix for the Needleman-Wunsch sequence alignment algorithm.

Part of the scoring system was functioning incorrectly when the gap penalty scores were non-integer,
as some scores were being stored in an integer array. Now the array is a float array.
........
r27280 | bugman | 2015-01-22 19:55:49 +0100 (Thu, 22 Jan 2015) | 7 lines

Created the Test_align_protein.test_align_pairwise_PAM250 unit test.

This is in the unit test module _lib._sequence_alignment.test_align_protein. It check the protein
alignment function lib.sequence_alignment.align_protein.align_pairwise() together with the PAM250
substitution matrix.
........
r27281 | bugman | 2015-01-23 09:38:45 +0100 (Fri, 23 Jan 2015) | 3 lines

Small docstring expansion for lib.sequence_alignment.align_protein.align_pairwise().
........
r27282 | bugman | 2015-01-23 09:40:55 +0100 (Fri, 23 Jan 2015) | 8 lines

Added the sequence alignment arguments to the structure.align user function front end.

This includes the 'matrix', 'gap_open_penalty', 'gap_extend_penalty', 'end_gap_open_penalty', and
'end_gap_extend_penalty' arguments. The 'algorithm' argument has not been added to save room, as
there is only one choice of 'NW70'. A paragraph has been added to the user function description to
explain the sequence alignment part of the user function.
........
r27283 | bugman | 2015-01-23 09:42:22 +0100 (Fri, 23 Jan 2015) | 6 lines

Added the sequence alignment arguments to the back end of the structure.align user function.

This is to allow the code in trunk to be functional before the sequence alignment before
superimposition has been implemented.
........
r27284 | bugman | 2015-01-23 09:46:40 +0100 (Fri, 23 Jan 2015) | 6 lines

Removed the 'algorithm' argument from the Structure.test_align_CaM_BLOSUM62 system test script.

This is for the structure.align user function. The argument has not been implemented to save room
in the GUI, and as 'NW70' is currently the only choice.
........
r27285 | bugman | 2015-01-23 10:05:12 +0100 (Fri, 23 Jan 2015) | 5 lines

The sequence alignment arguments are now passed all the way to the internal structural object backend.

These are the arguments of the structure.align user function.
........
r27286 | bugman | 2015-01-23 10:45:59 +0100 (Fri, 23 Jan 2015) | 3 lines

Copyright notice updates to 2015.
........
r27287 | bugman | 2015-01-23 11:02:05 +0100 (Fri, 23 Jan 2015) | 7 lines

Created the lib.sequence.aa_codes_three_to_one() function.

The lib.sequence module now contains the AA_CODES dictionary which is a translation table for the 3
letter amino acid codes to the one letter codes. The new aa_codes_three_to_one() function performs
the conversion.
........
r27288 | bugman | 2015-01-23 11:03:35 +0100 (Fri, 23 Jan 2015) | 5 lines

Implemented the internal structural object MolContainer.loop_residues() method.

This generator method is used to quickly loop over all residues of the molecule.
........
r27289 | bugman | 2015-01-23 11:06:53 +0100 (Fri, 23 Jan 2015) | 7 lines

Implemented the internal structural object one_letter_codes() method.

This will create a string of one letter residue codes for the given molecule. Only proteins are
currently supported. This method uses the new lib.sequence.aa_codes_three_to_one() relax library
function.
........
r27290 | bugman | 2015-01-23 11:09:41 +0100 (Fri, 23 Jan 2015) | 7 lines

Sequence alignment is now performed in lib.structure.internal.coordinates.assemble_coord_array().

This is a pairwise alignment to the first molecule of the list. The alignments are not yet used for
anything. The assemble_coord_array() function is used by the structure.align user function, as well
as a few other structure user functions.
........
r27291 | bugman | 2015-01-23 15:38:21 +0100 (Fri, 23 Jan 2015) | 7 lines

Fix for the lib.sequence.aa_codes_three_to_one() function.

Non-standard residues are now converted to the '*' code. The value of 'X' prevents any type of
alignment of a stretch of X residues as X to X in both the BLOSUM62 and PAM250 substitution matrices
are set to -1.
........
r27293 | bugman | 2015-01-23 17:49:29 +0100 (Fri, 23 Jan 2015) | 6 lines

Modified the gap penalty arguments for the structure.align user function.

These now must always be supplied, as None is not handled by the backend
lib.sequence_alignment.needleman_wunsch module. The previous defaults of None are now set to 0.0.
........
r27294 | bugman | 2015-01-26 10:47:26 +0100 (Mon, 26 Jan 2015) | 7 lines

Updated the artificial diffusion tensor test suite data.

This is the data in test_suite/shared_data/diffusion_tensor. The residues in the PDB files are now
proper amino acids, so the HETATM records are now ATOM records, and the CONECT records have been
eliminated.
........
r27295 | bugman | 2015-01-26 10:50:14 +0100 (Mon, 26 Jan 2015) | 6 lines

Another update for the artificial diffusion tensor test suite data.

The number of increments on the sphere has been increased from 5 to 6, to make the vector
distribution truly uniform. All PDB files and relaxation data has been updated.
........
r27296 | bugman | 2015-01-26 11:06:30 +0100 (Mon, 26 Jan 2015) | 7 lines

Bug fix for the printouts from the relax_data.read user function.

This problem was introduced in the last relax release (at r26588). The problem is that the spin ID
in the loaded relaxation data printout is the same for all data, being the spin ID of the first
spin. This has no effect on how relax runs, it is only incorrect feedback.
........
r27297 | bugman | 2015-01-26 11:26:15 +0100 (Mon, 26 Jan 2015) | 7 lines

Changed the synthetic PDB for the artificial diffusion tensor test suite data.

The nitrogen and proton positions are now shifted 10 Angstrom along the distribution vectors. This
is to avoid having all nitrogens positioned at the origin which causes the internal structural
object algorithm for determining which atoms are connected to fail.
........
r27298 | bugman | 2015-01-26 11:29:38 +0100 (Mon, 26 Jan 2015) | 7 lines

Reintroduced the CONECT PDB records into the artificial diffusion tensor test suite data.

The uniform vector distributions have overlapping vectors. This causes the internal structural
object atom connection determining algorithm to fail, as this is distance-based rather than using
the PDB amino acid definitions for now.
........
r27299 | bugman | 2015-01-26 11:45:40 +0100 (Mon, 26 Jan 2015) | 7 lines

Bug fix for the structure.read_pdb user function parsing of CONECT records.

CONECT records pointing to ATOM records were not being read by the user function. As ATOM records
should not require CONECT records by their definition, this is only a minor problem affecting
synthetic edge cases.
........
r27300 | bugman | 2015-01-26 14:25:42 +0100 (Mon, 26 Jan 2015) | 6 lines

Updates for the Structure.test_create_diff_tensor_pdb_sphere system test.

The test now uses the sphere synthetic relaxation data rather than the ellipsoid data, and the PDB
checking has been updated for the new data.
........
r27301 | bugman | 2015-01-26 14:33:32 +0100 (Mon, 26 Jan 2015) | 6 lines

Updates for the Structure.test_create_diff_tensor_pdb_prolate system test.

The test now uses the spheroid synthetic relaxation data rather than the ellipsoid data, and the PDB
checking has been updated for the new data.
........
r27302 | bugman | 2015-01-26 14:42:15 +0100 (Mon, 26 Jan 2015) | 7 lines

Updates for the Structure.test_create_diff_tensor_pdb_oblate system test.

The test now uses the spheroid synthetic relaxation data rather than the ellipsoid data, and the PDB
checking has been updated for the new data. The oblate tensor is now forced in the system test
script.
........
r27303 | bugman | 2015-01-26 14:48:45 +0100 (Mon, 26 Jan 2015) | 5 lines

Updates for the Structure.test_create_diff_tensor_pdb_ellipsoid system test.

The PDB checking has been updated for the new data.
........
r27304 | bugman | 2015-01-26 14:58:55 +0100 (Mon, 26 Jan 2015) | 6 lines

Updated the Structure.test_delete_atom system test for the changed PDB structures.

The test_suite/shared_data/diffusion_tensor/spheroid/uniform.pdb file now has more residues, and the
atomic positions are different.
........
r27305 | bugman | 2015-01-26 15:03:00 +0100 (Mon, 26 Jan 2015) | 6 lines

Updated the Structure.test_align system testt for the changed PDB structures.

The test_suite/shared_data/diffusion_tensor/spheroid/uniform.pdb file now has more residues, and the
atomic positions are different.
........
r27306 | bugman | 2015-01-26 15:04:12 +0100 (Mon, 26 Jan 2015) | 6 lines

Updated the Structure.test_align_molecules system test for the changed PDB structures.

The test_suite/shared_data/diffusion_tensor/spheroid/uniform.pdb file now has more residues, and the
atomic positions are different.
........
r27307 | bugman | 2015-01-26 15:19:18 +0100 (Mon, 26 Jan 2015) | 5 lines

Python 3 fix for the lib.sequence module.

The string.upper() function no longer exists.
........
r27308 | bugman | 2015-01-26 15:20:09 +0100 (Mon, 26 Jan 2015) | 5 lines

Python 3 fix for the lib.sequence_alignment.align_protein module.

The string.upper() function no longer exists.
........
r27309 | bugman | 2015-01-26 15:22:12 +0100 (Mon, 26 Jan 2015) | 5 lines

Modified the generate_data.py diffusion tensor to relaxation data creation script.

The NH vectors are no longer truncated to match the PDB.
........
r27310 | bugman | 2015-01-26 15:22:43 +0100 (Mon, 26 Jan 2015) | 5 lines

Python 3 fix for the generate_data.py diffusion tensor to relaxation data creation script.

The string.upper() function no longer exists.
........
r27311 | bugman | 2015-01-26 16:10:14 +0100 (Mon, 26 Jan 2015) | 6 lines

Reintroduced the simulated PDB truncation into the artificial diffusion tensor test suite data.

This is different to the previous implementation which was deleted recently. It now simulates the
truncation of both the N and H positions in the PDB and reconstructs the expected vector.
........
r27312 | bugman | 2015-01-26 16:52:56 +0100 (Mon, 26 Jan 2015) | 8 lines

Updates for some of the Structure.test_create_diff_tensor_pdb_* system tests.

This includes Structure.test_create_diff_tensor_pdb_ellipsoid,
Structure.test_create_diff_tensor_pdb_oblate, and Structure.test_create_diff_tensor_pdb_prolate.
The new simulated PDB truncation in the test data causes the PDB files created in these tests to be
slightly different.
........
r27313 | bugman | 2015-01-26 17:44:46 +0100 (Mon, 26 Jan 2015) | 21 lines

The pairwise sequence alignment is now active in the structure.align user function.

This is implemented in the lib.structure.internal.coordinates.assemble_coord_array() function for
assembling atomic coordinates. It will also automatically be used by many of the structure user
functions which operate on multiple structures.

The atomic coordinate assembly logic has been completely changed. Instead of grouping atomic
information by the molecule, it is now grouped per residue. This allows the residue based sequence
alignments to find matching coordinate information.

The assemble_coord_array() function will also handle the algorithm argument set to None and assume
that the residue sequences are identical between the structures, but this should be avoided.

A new function, common_residues() has been created as a work-around for not having a multiple
sequence alignment implementation. It will take the pairwise sequence alignment information and
construct a special data structure specifying which residues are present in all structures.

The logic for skipping missing atoms remains in place, but it now operates on the residue rather
than molecule level and simply uses the atom name rather than atom ID to identify common atoms.
........
r27314 | bugman | 2015-01-26 17:45:27 +0100 (Mon, 26 Jan 2015) | 3 lines

Changed the gap opening penalty to 10 in the N-state model structure_align.py system test script.
........
r27315 | bugman | 2015-01-26 17:46:13 +0100 (Mon, 26 Jan 2015) | 5 lines

Docstring update for the pipe_control.structure.main.assemble_coordinates() function.

This is for the algorithm argument which can now be set to None.
........
r27316 | bugman | 2015-01-26 18:29:06 +0100 (Mon, 26 Jan 2015) | 8 lines

Fix for the sequence alignment for assembling atomic coordinates.

This caused the Structure.test_superimpose_fit_to_mean system test to fail. The problem was in the
new logic of the lib.structure.internal.coordinates.assemble_coord_array() function. The coordinate
assembly now terminates when either the end of the first molecule or the current molecule is
reached.
........
r27317 | bugman | 2015-01-26 19:11:26 +0100 (Mon, 26 Jan 2015) | 6 lines

Bug fixes for the new lib.structure.internal.coordinates.common_residues() function.

This function for determining the common residues between multiple sets of pairwise alignments was
failing in quite a number of cases. The logic has been updated to handle these.
........
r27318 | bugman | 2015-01-26 19:38:48 +0100 (Mon, 26 Jan 2015) | 5 lines

Another fix for the lib.structure.internal.coordinates.common_residues() function.

The wrong index was being used to skip residues in the second sequence.
........
r27319 | bugman | 2015-01-26 19:39:36 +0100 (Mon, 26 Jan 2015) | 3 lines

Removal of debugging printouts.
........
r27321 | bugman | 2015-01-27 09:48:41 +0100 (Tue, 27 Jan 2015) | 7 lines

Created the Structure.test_pdb_combined_secondary_structure system test.

This is used to demonstrate a problem in the handling of secondary structure metadata when combining
multiple PDB structures. It appears as if the chain ID is preserved as the original ID and is not
updated to match the new IDs in the output PDB.
........
r27322 | bugman | 2015-01-27 10:50:56 +0100 (Tue, 27 Jan 2015) | 9 lines

Bug fix for the PDB secondary sheet handling when combining multiple PDB structures.

The helix and sheet metadata now converts the original chain IDs into molecule indices, shifted to
new values based on the currently loaded data, when the structure.read_pdb user function is
executed. When the structure.write_pdb user function is executed, the molecule indices are
converted into new chain IDs. This allows the chain IDs in the HELIX and SHEET records to match
those of the ATOM and HETATOM records.
........
r27323 | bugman | 2015-01-27 10:51:34 +0100 (Tue, 27 Jan 2015) | 5 lines

Updated the Structure.test_metadata_xml system test for the changed PDB metadata handling.

The helix and sheets IDs are now molecule indices.
........
r27325 | bugman | 2015-01-27 11:35:39 +0100 (Tue, 27 Jan 2015) | 6 lines

Disabled the General.test_bug_23187_residue_delete_gui GUI test.

This is essential as a wxPython bug in Mac OS X systems causes this test to trigger a 'Bus Error'
every time the GUI tests are run, killing relax.
........
r27331 | bugman | 2015-01-27 15:58:24 +0100 (Tue, 27 Jan 2015) | 6 lines

Backported the relax 3.3.5 CHANGES file changes to trunk.

The command used was:
svn merge -r27329:27330 svn+ssh://bugman@.../svn/relax/tags/3.3.5 .
........
r27336 | bugman | 2015-01-28 09:47:07 +0100 (Wed, 28 Jan 2015) | 3 lines

Spelling fixes for the CHANGES document.
........
r27337 | bugman | 2015-01-28 11:48:50 +0100 (Wed, 28 Jan 2015) | 5 lines

Created the Structure.test_align_molecules2 system test.

This is to demonstrate a failure condition in the structure.align user function.
........
r27338 | bugman | 2015-01-28 12:29:05 +0100 (Wed, 28 Jan 2015) | 8 lines

Large simplification of the atomic coordinate assembly code in the internal structural object.

This is in the lib.structure.internal.coordinates.assemble_coord_array() function. The logic of the
function has recently changed due to the introduction of the pairwise sequence alignments. This
caused a lot of code to now be redundant, and also incorrect in certain cases. This simplification
fixes the problem caught by the Structure.test_align_molecules2 system test.
........
r27339 | bugman | 2015-01-28 12:29:54 +0100 (Wed, 28 Jan 2015) | 3 lines

Fix for the Structure.test_displacement system test - the molecule IDs needed updating.
........
r27340 | bugman | 2015-01-28 13:07:29 +0100 (Wed, 28 Jan 2015) | 6 lines

Created the Structure.test_align_molecules_end_truncation system test.

This is to demonstrate a failure of the common residue detection algorithm using multiple pairwise
alignments in the backend of the structure.align and other multiple structure based user functions.
........
r27341 | bugman | 2015-01-28 14:41:51 +0100 (Wed, 28 Jan 2015) | 3 lines

Created empty unit test infrastructure for testing the lib.structure.internal.coordinates module.
........
r27342 | bugman | 2015-01-28 15:02:11 +0100 (Wed, 28 Jan 2015) | 7 lines

Created the Test_coordinates.test_common_residues unit test.

This is from the _lib._structure._internal.test_coordinates unit test module. The test shows that
the lib.structure.internal.coordinates.common_residues() function is working correctly. However the
printout, which is not caught by the test, is incorrect.
........
r27343 | bugman | 2015-01-28 15:15:13 +0100 (Wed, 28 Jan 2015) | 6 lines

Modified the lib.structure.internal.coordinates.common_residues() function.

It now accepts the seq argument which will caused the gapped sequence strings to be returned. This
is to allow for checking in the unit tests.
........
r27344 | bugman | 2015-01-28 18:24:15 +0100 (Wed, 28 Jan 2015) | 7 lines

Created the Test_align_protein.test_align_multiple_from_pairwise unit test.

This is in the _lib._sequence_alignment.test_align_protein unit test module. This test checks the
operation of the lib.sequence_alignment.align_protein.align_multiple_from_pairwise() function, which
does not yet exist.
........
r27345 | bugman | 2015-01-29 13:23:58 +0100 (Thu, 29 Jan 2015) | 5 lines

Simplified the Test_coordinates.test_common_residues unit test by removing many residues.

This is from the _lib._structure._internal.test_coordinates unit test module.
........
r27346 | bugman | 2015-01-29 13:24:59 +0100 (Thu, 29 Jan 2015) | 5 lines

Expanded the docstring of the Test_align_protein.test_align_multiple_from_pairwise unit test.

This is from the _lib._sequence_alignment.test_align_protein unit test module.
........
r27347 | bugman | 2015-01-29 13:26:00 +0100 (Thu, 29 Jan 2015) | 5 lines

Attempt at fixing the lib.structure.internal.coordinates.common_residues() function.

This function still does not work correctly.
........
r27348 | bugman | 2015-01-29 13:33:32 +0100 (Thu, 29 Jan 2015) | 9 lines

Renamed the Test_align_protein.test_align_multiple_from_pairwise unit test.

This is now the Test_msa.test_central_star unit test of the _lib._sequence_alignment.test_msa unit
test module (it was originally in the _lib._sequence_alignment.test_align_protein unit test module).
This is in preparation for converting the
lib.sequence_alignment.align_protein.align_multiple_from_pairwise() function into the
lib.sequence_alignment.msa.central_star() function.
........
r27349 | bugman | 2015-01-29 13:34:38 +0100 (Thu, 29 Jan 2015) | 5 lines

Added the lib.sequence_alignment.align_protein.align_multiple_from_pairwise() function.

This should have been committed earlier. The function is only partly implemented.
........
r27350 | bugman | 2015-01-29 13:37:46 +0100 (Thu, 29 Jan 2015) | 5 lines

Initial lib.sequence_alignment.msa.central_star() function.

This was moved from lib.sequence_alignment.align_protein.align_multiple_from_pairwise().
........
r27351 | bugman | 2015-01-29 13:38:31 +0100 (Thu, 29 Jan 2015) | 3 lines

Import fix for the _lib._sequence_alignment.test_align_protein unit test module.
........
r27352 | bugman | 2015-01-29 14:16:23 +0100 (Thu, 29 Jan 2015) | 5 lines

Added the verbosity argument to lib.sequence_alignment.align_protein.align_pairwise().

If set to zero, all printouts are suppressed.
........
r27353 | bugman | 2015-01-29 15:36:05 +0100 (Thu, 29 Jan 2015) | 6 lines

The Needleman-Wunsch sequence alignment algorithm now calculates and returns an alignment score.

This is in the lib.sequence_alignment.needleman_wunsch.needleman_wunsch_align() function. The score
is calculated as the sum of the Needleman-Wunsch matrix elements along the traceback path.
........
r27354 | bugman | 2015-01-29 15:37:23 +0100 (Thu, 29 Jan 2015) | 6 lines

The protein pairwise sequence alignment function now returns the alignment score.

This is in the lib.sequence_alignment.align_protein.align_pairwise() function. The score from the
Needleman-Wunsch sequence alignment algorithm is simply passed along.
........
r27355 | bugman | 2015-01-29 15:39:38 +0100 (Thu, 29 Jan 2015) | 6 lines

Fix for the Test_msa.test_central_star unit test.

This is from the _lib._sequence_alignment.test_msa unit test module. Some of the real gap matrix
indices were incorrect.
........
r27356 | bugman | 2015-01-29 15:48:34 +0100 (Thu, 29 Jan 2015) | 10 lines

Complete implementation of the central star multiple sequence alignment algorithm.

This includes all the four major steps - pairwise alignment between all sequence pairs, finding the
central sequence, iteratively aligning the sequences to the gapped central sequence, and introducing
gaps in previous alignments during the iterative alignment.

The correctness of the implementation is verified by the Test_msa.test_central_star unit test of the
_lib._sequence_alignment.test_msa module.
........
r27357 | bugman | 2015-01-29 15:52:16 +0100 (Thu, 29 Jan 2015) | 7 lines

Fixes for the unit tests of the _lib._sequence_alignment.test_align_protein module.

The Test_align_protein.test_align_pairwise_PAM250 unit test was accidentally duplicated due to a
copy and paste error. And the lib.sequence_alignment.align_protein.align_pairwise() function now
also returns the alignment score.
........
r27358 | bugman | 2015-01-29 15:53:41 +0100 (Thu, 29 Jan 2015) | 6 lines

Fixes for the unit tests of the _lib._sequence_alignment.test_needleman_wunsch module.

The lib.sequence_alignment.needleman_wunsch.needleman_wunsch_align() function now returns the
alignment score.
........
r27359 | bugman | 2015-01-29 16:19:17 +0100 (Thu, 29 Jan 2015) | 11 lines

The assemble_coord_array() function is now using the central star multiple sequence alignment.

This is the function from the lib.structure.internal.coordinates module used to assemble common
atomic coordinate information, used by the structure.align, structure.atomic_fluctuations,
structure.com, structure.displacement, structure.find_pivot, structure.mean, structure.rmsd,
structure.superimpose and structure.web_of_motion user functions.

The non-functional lib.structure.internal.coordinates.common_residues() function has been removed as
the lib.sequence_alignment.msa.central_star() function performs this functionality correctly.
........
r27360 | bugman | 2015-01-29 16:20:54 +0100 (Thu, 29 Jan 2015) | 6 lines

Deleted the Test_coordinates.test_common_residues unit test.

This is from the _lib._structure._internal.test_coordinates unit test module. The
lib.structure.internal.coordinates.common_residues() function no longer exists.
........
r27361 | bugman | 2015-01-29 16:25:29 +0100 (Thu, 29 Jan 2015) | 3 lines

Alphabetical ordering of all Structure system tests.
........
r27362 | bugman | 2015-01-29 16:37:32 +0100 (Thu, 29 Jan 2015) | 3 lines

Better printout spacing in lib.sequence_alignment.msa.central_star().
........
r27363 | bugman | 2015-01-29 17:17:34 +0100 (Thu, 29 Jan 2015) | 6 lines

Fixes for the Structure.test_align_molecules_end_truncation system test.

This system test had only been partly converted from the old Structure.test_align_molecules2 system
test it had been copied from.
........
r27364 | bugman | 2015-01-29 17:38:25 +0100 (Thu, 29 Jan 2015) | 18 lines

Reverted r27291 as this was rubbish.

The command used was:
svn merge -r27291:r27290 .

.....
r27291 | bugman | 2015-01-23 15:38:21 +0100 (Fri, 23 Jan 2015) | 7 lines
Changed paths:
M /trunk/lib/sequence.py

Fix for the lib.sequence.aa_codes_three_to_one() function.

Non-standard residues are now converted to the '*' code. The value of 'X' prevents any type of
alignment of a stretch of X residues as X to X in both the BLOSUM62 and PAM250 substitution matrices
are set to -1.
.....
........
r27365 | bugman | 2015-01-29 17:50:31 +0100 (Thu, 29 Jan 2015) | 5 lines

Created the Internal_selection.count_atoms() internal structural object selection method.

This counts the number of atoms in the current selection.
........
r27366 | bugman | 2015-01-29 17:59:21 +0100 (Thu, 29 Jan 2015) | 7 lines

Added final printouts to the structure.rotate and structure.translate user function backends.

This is to give feedback to the user as to how many atoms were translated or rotated, to aid in
solving problems with the structure user functions. These backend functions are also used by the
structure.align and structure.superimpose user functions.
........
r27367 | bugman | 2015-01-29 18:16:04 +0100 (Thu, 29 Jan 2015) | 5 lines

Bug fix for the structure.align user function.

The addition of the molecule name to the displacement ID is now correctly performed.
........
r27368 | bugman | 2015-01-29 18:22:32 +0100 (Thu, 29 Jan 2015) | 29 lines

Reverted r27364 as this was recursive rubbish.

The command used was:
svn merge -r27364:r27363 .

.....
r27364 | bugman | 2015-01-29 17:38:25 +0100 (Thu, 29 Jan 2015) | 18 lines
Changed paths:
M /trunk/lib/sequence.py

Reverted r27291 as this was rubbish.

The command used was:
svn merge -r27291:r27290 .

.....
r27291 | bugman | 2015-01-23 15:38:21 +0100 (Fri, 23 Jan 2015) | 7 lines
Changed paths:
M /trunk/lib/sequence.py

Fix for the lib.sequence.aa_codes_three_to_one() function.

Non-standard residues are now converted to the '*' code. The value of 'X' prevents any type of
alignment of a stretch of X residues as X to X in both the BLOSUM62 and PAM250 substitution matrices
are set to -1.
.....
.....
........
r27370 | bugman | 2015-01-29 18:30:04 +0100 (Thu, 29 Jan 2015) | 6 lines

Corrections for the Structure.test_align_CaM_BLOSUM62 system test.

The CaM N and C domains can not be aligned together in a global MSA as they would align very well to
themselves, causing the atomic coordinate assembly function to fail.
........
r27371 | bugman | 2015-01-29 19:18:23 +0100 (Thu, 29 Jan 2015) | 6 lines

Improvement for the lib.sequence_alignment.msa.central_star() function.

The strings and gap matrix returned by the function have been reordered to match the input
sequences.
........
r27373 | bugman | 2015-01-29 19:27:18 +0100 (Thu, 29 Jan 2015) | 6 lines

Fix for the new Internal_selection.count_atoms() internal structural object selection method.

The method was previously returning the total number of molecules, not the total number of atoms in
the selection.
........
r27374 | bugman | 2015-01-29 19:28:34 +0100 (Thu, 29 Jan 2015) | 6 lines

Printout fix for the backend of the structure.translate and structure.rotate user functions.

Model numbers of zero were not correctly identified. This also affects the structure.align and
structure.superimpose user functions which uses this backend code.
........
r27375 | bugman | 2015-01-29 19:34:32 +0100 (Thu, 29 Jan 2015) | 3 lines

Another fix for the Internal_selection.count_atoms() internal structural object selection method.
........
r27377 | bugman | 2015-01-30 09:32:26 +0100 (Fri, 30 Jan 2015) | 6 lines

Small fix for the lib.structure.internal.coordinates.assemble_coord_array() function.

The termination condition for determining the residues in common between all structures was
incorrect.
........
r27378 | bugman | 2015-01-30 09:36:46 +0100 (Fri, 30 Jan 2015) | 7 lines

Modified the Structure.test_align_molecules_end_truncation system test.

The calmodulin bound calciums are now deleted prior to the structure.align user function call. This
prevents these being labelled as '*' residues and aligning with real amino acids via the central
star multiple sequence alignment (MSA) algorithm.
........
r27379 | bugman | 2015-01-30 09:59:25 +0100 (Fri, 30 Jan 2015) | 10 lines

Large speed up of the mol-res-spin selection object.

The Selection.contains_mol(), Selection.contains_res() and Selection.contains_spin() methods of the
lib.selection module have been redesigned for speed. Instead of setting a number of flags and
performing bit operations at the end of the method to return the correct Boolean value, each of the
multiple checks now simply returns a Boolean value, avoiding all subsequent checks. The check list
order has also been rearranged so that the least expensive checks are to the top and the most time
intensive checks are last.
........
r27380 | bugman | 2015-01-30 10:30:34 +0100 (Fri, 30 Jan 2015) | 7 lines

Created the new relax data store object for saving sequence alignments.

This is in the new data_store.seq_align module via the Seqence_alignments object, subclassed from
RelaxListType, for holding all alignments and the Alignment Element object, subclassed from Element,
for holding each individual alignment. The objects are currently unused.
........
r27381 | bugman | 2015-01-30 11:03:38 +0100 (Fri, 30 Jan 2015) | 3 lines

Added the seq_align module to the data_store package __all__ list.
........
r27382 | bugman | 2015-01-30 11:04:02 +0100 (Fri, 30 Jan 2015) | 3 lines

Spelling mistake in the Sequence_alignments class name.
........
r27383 | bugman | 2015-01-30 11:33:40 +0100 (Fri, 30 Jan 2015) | 6 lines

Created the Test_seq_align.test_alignment_addition unit test.

This is in the _data_store.test_seq_align unit test module. This tests the setup of the sequence
alignment object via the data_store.seq_align.Sequence_alignment.add() method.
........
r27384 | bugman | 2015-01-30 11:35:11 +0100 (Fri, 30 Jan 2015) | 6 lines

Fixes for the data_store.seq_align.Alignment.generate_id() method.

These problems were identified by the _data_store.test_seq_align module
Test_seq_align.test_alignment_addition unit test.
........
r27385 | bugman | 2015-01-30 11:45:54 +0100 (Fri, 30 Jan 2015) | 7 lines

Added the Test_seq_align.test_find_alignment and Test_seq_align.test_find_missing_alignment unit tests.

These are in the _data_store.test_seq_align unit test module. They check the functionality of the
currently unimplemented Sequence_alignment.find_alignment() method which will be used to return
pre-existing alignments.
........
r27386 | bugman | 2015-01-30 11:57:38 +0100 (Fri, 30 Jan 2015) | 5 lines

Code rearrangement in the _data_store.test_seq_align unit test module.

The ID generation has been shifted into the generate_ids() method to be used by multiple tests.
........
r27387 | bugman | 2015-01-30 11:58:44 +0100 (Fri, 30 Jan 2015) | 5 lines

Implemented the data_store.seq_align.Sequence_alignments.find_alignment() method.

This will only return an alignment if all alignment input data and alignment settings match exactly.
........
r27388 | bugman | 2015-01-30 12:23:40 +0100 (Fri, 30 Jan 2015) | 6 lines

Shifted the data_store.seq_align.Alignment.generate_id() method into the relax library.

It has been converted into the lib.structure.internal.coordinates.generate_id() function to allow
for greater reuse.
........
r27389 | bugman | 2015-01-30 12:35:35 +0100 (Fri, 30 Jan 2015) | 9 lines

Created the Sequence.test_align_molecules system test.

This will be used to implement the sequence.align user function which will be used for performing
sequence alignments on structural data within the relax data store and storing the data in the data
pipe independent sequence_alignments data store object (which will be an instance of
data_store.seq_align.Sequence_alignments). The system test also checks the XML saving and loading
of the ds.sequence_alignments data structure.
........
r27390 | bugman | 2015-01-30 12:46:23 +0100 (Fri, 30 Jan 2015) | 8 lines

Renamed the Sequence.test_align_molecules system test to Structure.test_sequence_alignment_molecules.

As the sequence alignment is dependent on the structural data in the relax data store, the user
function for sequence alignment would be better named as structure.sequence_alignment. The
sequence.align user function is not appropriate as all other sequence user functions relate to the
molecule, residue, and spin data structure of each data pipe rather than to the structural data.
........
r27391 | bugman | 2015-01-30 14:46:12 +0100 (Fri, 30 Jan 2015) | 6 lines

Modified the Structure.test_sequence_alignment_molecules system test.

Changed and expanded the arguments to the yet to be implemented structure.sequence_alignment user
function.
........
r27392 | bugman | 2015-01-30 15:40:38 +0100 (Fri, 30 Jan 2015) | 8 lines

Important formatting improvement for the description in the GUI user function windows.

Previously lists, item lists, and prompt items were spaced with one empty line at the top and two at
the bottom. The two empty lines at the bottom was an accident caused by how the list text elements
were built up. Now the final newline character is stripped so that the top and bottom of the lists
only consist of one empty line. The change can give a lot more room in the GUI window.
........
r27393 | bugman | 2015-01-30 15:50:18 +0100 (Fri, 30 Jan 2015) | 7 lines

Created the frontend for the structure.sequence_alignment user function.

This is based on the structure.align user function with the 3D superimposition arguments removed and
new arguments added for selecting the MSA algorithm and the pairwise alignment algorithm (despite
only NW70 being currently implemented).
........
r27394 | bugman | 2015-01-30 16:27:19 +0100 (Fri, 30 Jan 2015) | 8 lines

Modified the assemble_coordinates() function of the pipe_control.structure.main module.

The function has been renamed to assemble_structural_objects(). The call to the
lib.structure.internal.coordinates.assemble_coord_array() function has also been shifted out of
assemble_structural_objects() to simplify the logic and decrease the amount of arguments passed
around.
........
r27395 | bugman | 2015-01-30 16:55:13 +0100 (Fri, 30 Jan 2015) | 7 lines

Spun out the atomic assembly code of the assemble_coord_array() function.

The code from the lib.structure.internal.coordinates.assemble_coord_array() function has been
shifted to the new assemble_atomic_coordinates(). This is to simplify assemble_coord_array() as
well as to isolate the individual functionality for reuse.
........
r27396 | bugman | 2015-01-30 17:20:04 +0100 (Fri, 30 Jan 2015) | 6 lines

Implemented the backend of the structure.sequence_alignment user function.

This checks some of the input parameters, assembles the structural objects then the atomic
coordinate information, performs the multiple sequence alignment, and then stores the results.
........
r27397 | bugman | 2015-01-30 17:31:48 +0100 (Fri, 30 Jan 2015) | 6 lines

Fixes for the sequence alignment objects for the relax data store.

The Sequence_alignments(RelaxListType) and Alignment(Element) classes were not being set up
correctly. The container names and descriptions were missing.
........
r27398 | bugman | 2015-01-30 17:34:36 +0100 (Fri, 30 Jan 2015) | 5 lines

The data store ds.sequence_alignment object is now being treated as special and is blacklisted.

The object is now explicitly recreated in the data store from_xml() method.
........
r27399 | bugman | 2015-01-30 17:42:54 +0100 (Fri, 30 Jan 2015) | 3 lines

Fix for a fatal bug introduced in the last commit (r27398).
........
r27400 | bugman | 2015-01-30 17:52:57 +0100 (Fri, 30 Jan 2015) | 6 lines

More advanced support for different numpy number types in the lib.xml relax library module.

This allows numpy int16, int32, float32, and float64 objects to be stored and retrieved from relax
XML save and results files.
........
r27401 | bugman | 2015-01-30 18:03:56 +0100 (Fri, 30 Jan 2015) | 3 lines

Fixes for handling the sequence_alignments data store object.
........
r27402 | bugman | 2015-01-30 18:04:44 +0100 (Fri, 30 Jan 2015) | 5 lines

Implemented the data store Sequence_alignments.from_xml() method.

This method is required for being able to read RelaxListType objects from the XML file.
........
r27403 | bugman | 2015-01-30 18:52:30 +0100 (Fri, 30 Jan 2015) | 8 lines

Modified the data returned by lib.structure.internal.coordinates.assemble_atomic_coordinates().

The function will now assemble simple lists of object IDs, model numbers and molecule names with
each list element corresponding to a different structural model. This will be very useful for
converting from the complicated pipes, models, and molecules user function arguments into relax data
store independent flat lists.
........
r27404 | bugman | 2015-01-30 18:54:08 +0100 (Fri, 30 Jan 2015) | 7 lines

Updates for the structure.sequence_alignment user function.

This is for the changes to the lib.structure.internal.coordinates.assemble_atomic_coordinates()
function return values. The new object ID, model, and molecule flat lists are used directly for
storing the alignment results in the relax data store.
........
r27405 | bugman | 2015-01-30 19:46:14 +0100 (Fri, 30 Jan 2015) | 6 lines

Updates for the Structure.test_sequence_alignment_molecules system test.

This is required due to the changes in the backend of the structure.sequence_alignment user
function.
........
r27406 | bugman | 2015-01-31 10:02:45 +0100 (Sat, 31 Jan 2015) | 11 lines

Merger of the structure.align and structure.superimpose user functions.

The final user function is called structure.superimpose. As the sequence alignment component of the
structure.align user function has been shifted into the new structure.sequence_alignment user
function and the information is now stored in ds.sequence_alignments relax data store object, the
functionality of structure.align and structure.superimpose are now essentially the same. The
sequence alignment arguments and documentation has also been eliminated. And the documentation has
been updated to say that sequence alignments from structure.sequence_alignment will be used for
superimposing the structures.
........
r27407 | bugman | 2015-01-31 10:03:50 +0100 (Sat, 31 Jan 2015) | 3 lines

Updated the Structure system tests for the structure.align and structure.superimpose user function merger.
........
r27408 | bugman | 2015-01-31 10:13:27 +0100 (Sat, 31 Jan 2015) | 5 lines

Fix for the structure.sequence_alignment user function.

The alignment data should be stored in ds.sequence_alignments rather than ds.sequence_alignment.
........
r27409 | bugman | 2015-01-31 10:17:58 +0100 (Sat, 31 Jan 2015) | 6 lines

Sequence alignments can now be retrieved without supplying the algorithm settings.

This is in the data_store.seq_align.Sequence_alignments.find_alignment() method. The change allows
for the retrieval of pre-existing sequence alignments at any stage.
........
r27410 | bugman | 2015-01-31 11:32:07 +0100 (Sat, 31 Jan 2015) | 15 lines

Added a function for assemble the common atomic coordinates taking sequence alignments into account.

This is the new pipe_control.structure.main.assemble_structural_coordinates() function. It takes
the sequence alignment logic out of the lib.structure.internal.coordinates.assemble_coord_array()
function so that sequence alignments in the relax data store can be used. The logic has also been
redefined as: 1, use a sequence alignment from the relax data store if present; 2, use no sequence
alignment if coordinates only come from structural models; 3, fall back to a residue number based
alignment. The residue number based alignment is yet to be implemented.

As a consequence, the lib.structure.internal.coordinates.assemble_coord_array() function has been
greatly simplified. It no longer handles sequence alignments, but instead expects the residue
skipping data structure, built from the alignment, as an argument. The seq_info_flag argument has
also been eliminated in this function as well as the pipe_control.structure.main module.
........
r27411 | bugman | 2015-01-31 11:36:34 +0100 (Sat, 31 Jan 2015) | 7 lines

Updated the structure.displacement user function for the changed atomic assembly logic.

This now uses the assemble_structural_coordinates() function of the pipe_control.structure.main
module to obtain the common coordinates based on pre-existing sequence alignments, no-alignment, or
the default of a residue number based alignment.
........
r27412 | bugman | 2015-01-31 11:37:29 +0100 (Sat, 31 Jan 2015) | 7 lines

Updated the structure.find_pivot user function for the changed atomic assembly logic.

This now uses the assemble_structural_coordinates() function of the pipe_control.structure.main
module to obtain the common coordinates based on pre-existing sequence alignments, no-alignment, or
the default of a residue number based alignment.
........
r27413 | bugman | 2015-01-31 11:38:34 +0100 (Sat, 31 Jan 2015) | 7 lines

Updated the structure.atomic_fluctuations user function for the changed atomic assembly logic.

This now uses the assemble_structural_coordinates() function of the pipe_control.structure.main
module to obtain the common coordinates based on pre-existing sequence alignments, no-alignment, or
the default of a residue number based alignment.
........
r27414 | bugman | 2015-01-31 11:39:41 +0100 (Sat, 31 Jan 2015) | 7 lines

Updated the structure.rmsd user function for the changed atomic assembly logic.

This now uses the assemble_structural_coordinates() function of the pipe_control.structure.main
module to obtain the common coordinates based on pre-existing sequence alignments, no-alignment, or
the default of a residue number based alignment.
........
r27415 | bugman | 2015-01-31 11:40:22 +0100 (Sat, 31 Jan 2015) | 7 lines

Updated the structure.web_of_motion user function for the changed atomic assembly logic.

This now uses the assemble_structural_coordinates() function of the pipe_control.structure.main
module to obtain the common coordinates based on pre-existing sequence alignments, no-alignment, or
the default of a residue number based alignment.
........
r27416 | bugman | 2015-01-31 11:42:52 +0100 (Sat, 31 Jan 2015) | 5 lines

Fix for the structure.superimpose user function if no data pipes are supplied.

This reintroduces the pipes list construction.
........
r27417 | bugman | 2015-01-31 11:49:51 +0100 (Sat, 31 Jan 2015) | 6 lines

Fix for the new pipe_control.structure.main.assemble_structural_coordinates() function.

The atom_id argument is now passed into the assemble_atomic_coordinates() function of the
lib.structure.internal.coordinates module so that atom subsets are once again recognised.
........
r27418 | bugman | 2015-01-31 11:54:29 +0100 (Sat, 31 Jan 2015) | 5 lines

Another fix for the new pipe_control.structure.main.assemble_structural_coordinates() function.

The logic for determining if only models will be superimposed was incorrect.
........
r27419 | bugman | 2015-01-31 12:04:18 +0100 (Sat, 31 Jan 2015) | 7 lines

Implemented the residue number based alignment in the atomic assembly function.

This is in the new pipe_control.structure.main.assemble_structural_coordinates() function. The code
for creating the residue skipping data structure is now shared between the three sequence alignment
options.
........
r27420 | bugman | 2015-01-31 12:21:57 +0100 (Sat, 31 Jan 2015) | 8 lines

Implemented the multiple sequence alignment method based on residue numbers.

This is the new msa_residue_numbers() function in the lib.sequence_alignment.msa module. The logic
is rather basic in that the alignment is based on a residue number range from the lowest residue
number to the highest - i.e. it does not take into account gaps in common between all input
sequences.
........
r27421 | bugman | 2015-01-31 12:24:09 +0100 (Sat, 31 Jan 2015) | 5 lines

The residue number based sequence alignment is now executed when assembling atomic coordinates.

This is in the assemble_structural_coordinates() function of the pipe_control.structure.main module.
........
r27422 | bugman | 2015-01-31 12:41:37 +0100 (Sat, 31 Jan 2015) | 6 lines

Modified the internal structural object one_letter_codes() method.

This now validates the models to make sure all models match, and the method requires the selection
object so that residue subsets can be handled.
........
r27423 | bugman | 2015-01-31 12:42:39 +0100 (Sat, 31 Jan 2015) | 5 lines

The assemble_atomic_coordinates() function now calls one_letter_codes() with the selection object.

This is the lib.structure.internal.coordinates module function.
........
r27424 | bugman | 2015-01-31 12:44:26 +0100 (Sat, 31 Jan 2015) | 6 lines

Fix for the residue number based sequence alignment when assembling structural coordinates.

This is in the assemble_structural_coordinates() function of the pipe_control.structure.main module.
The sequences of the different molecules can be of different lengths.
........
r27426 | bugman | 2015-01-31 13:13:38 +0100 (Sat, 31 Jan 2015) | 8 lines

Shifted the residue skipping data structure construction into the relax library.

The code was originally in pipe_control.structure.main.assemble_structural_coordinates() but has
been shifted into the new lib.sequence_alignment.msa.msa_residue_skipping() function. This will
also for greater code reuse. The lib.sequence_alignment.msa module is also a better location for
such functionality.
........
r27427 | bugman | 2015-01-31 15:07:35 +0100 (Sat, 31 Jan 2015) | 6 lines

Renamed the Structure.test_sequence_alignment_molecules system test.

The new name is Structure.test_sequence_alignment_central_star_nw70_blosum62, to better reflect what
the test is doing.
........
r27428 | bugman | 2015-01-31 15:15:17 +0100 (Sat, 31 Jan 2015) | 5 lines

Modified the Structure.test_sequence_alignment_central_star_nw70_blosum62 system test.

Some residues are now deleted so that the sequences are not identical.
........
r27429 | bugman | 2015-01-31 15:17:09 +0100 (Sat, 31 Jan 2015) | 7 lines

Created the Structure.test_sequence_alignment_residue_number system test.

This will be used to test the structure.sequence_alignment user function together with the 'residue
number' MSA algorithm. This is simply a copy of the
Structure.test_sequence_alignment_central_star_nw70_blosum62 system test with a few small changes.
........
r27430 | bugman | 2015-01-31 17:26:57 +0100 (Sat, 31 Jan 2015) | 3 lines

Corrections and simplifications for the Structure.test_sequence_alignment_residue_number system test.
........
r27431 | bugman | 2015-01-31 17:33:38 +0100 (Sat, 31 Jan 2015) | 5 lines

Modified the structure.sequence_alignment user function arguments.

The pairwise_algorithm and matrix arguments can no be None, and they default to None.
........
r27432 | bugman | 2015-01-31 17:54:04 +0100 (Sat, 31 Jan 2015) | 6 lines

Updated the Structure.test_align_CaM_BLOSUM62 system test script.

The MSA algorithm and pairwise alignment algorithms are now specified in the
structure.sequence_alignment user function calls.
........
r27433 | bugman | 2015-01-31 17:56:51 +0100 (Sat, 31 Jan 2015) | 7 lines

Creation of the lib.sequence_alignment.msa.msa_general() function.

This consists of code from the structure.sequence_alignment user function backend function
pipe_control.structure.main.sequence_alignment() for selecting between the different sequence
alignment methods.
........
r27434 | bugman | 2015-01-31 17:59:44 +0100 (Sat, 31 Jan 2015) | 6 lines

The structure.sequence_alignment user function now sets some arguments to None before storage.

This is for all arguments not used in the sequence alignment. For example the residue number based
alignment does not use the gap penalties, pairwise alignment algorithm or the substitution matrices.
........
r27435 | bugman | 2015-02-02 09:11:41 +0100 (Mon, 02 Feb 2015) | 7 lines

Fix for the lib.sequence_alignment.msa.msa_residue_skipping() function.

The sequences argument for passing in the one letter codes has been removed. The per molecule loop
should be over the alignment strings rather than one letter codes, otherwise the loop will be too
short.
........
r27436 | bugman | 2015-02-02 09:20:06 +0100 (Mon, 02 Feb 2015) | 9 lines

Fix for the internal structural object atomic coordinate assembly function.

This is the pipe_control.structure.main.assemble_structural_coordinates() function. The case of no
sequence alignment being required as only models are being handled is now functional. The strings
and gaps data structures passed into the lib.sequence_alignment.msa.msa_residue_skipping() function
for generating the residue skipping data structure are now set to the one letter codes and an empty
structure of zeros respectively.
........
r27437 | bugman | 2015-02-02 16:44:46 +0100 (Mon, 02 Feb 2015) | 6 lines

Test data directory renaming.

The test_suite/shared_data/diffusion_tensor/spheroid directory has been renamed to spheroid_prolate.
This is in preparation for creating oblate spheroid diffusion relaxation data.
........
r27438 | bugman | 2015-02-02 16:46:06 +0100 (Mon, 02 Feb 2015) | 5 lines

Creation of oblate spheroid diffusion relaxation data.

This will be used in the Structure.test_create_diff_tensor_pdb_oblate system test.
........

2015-02-04 16:16:33 Tree
[r27522] by bugman

Merged revisions 27500-27501,27503-27517 via svnmerge from
svn+ssh://bugman@.../svn/relax/trunk

........
r27500 | bugman | 2015-02-04 09:30:58 +0100 (Wed, 04 Feb 2015) | 3 lines

Modified the manual_c_module.py developer script so that the path can be supplied on the command line.
........
r27501 | bugman | 2015-02-04 09:34:10 +0100 (Wed, 04 Feb 2015) | 3 lines

Removed some unused imports, as found by devel_scripts/find_unused_imports.py.
........
r27503 | bugman | 2015-02-04 10:14:28 +0100 (Wed, 04 Feb 2015) | 5 lines

Added a copyright notice to the memory_leak_test_relax_fit.py development script.

This is to know how old the script is, to see how out of date it is in the future.
........
r27504 | bugman | 2015-02-04 11:15:48 +0100 (Wed, 04 Feb 2015) | 7 lines

Created the memory_leak_test_GUI_uf.py development script.

This is to help in tracking down memory leaks in the relax GUI user functions. Instead of using a
debugging Python version and guppy (wxPython doesn't seem to work with these), the pympler Python
package and its muppy module is used to produce a memory usage printout.
........
r27505 | bugman | 2015-02-04 11:30:11 +0100 (Wed, 04 Feb 2015) | 3 lines

Clean up of the memory_leak_test_GUI_uf.py development script.
........
r27506 | bugman | 2015-02-04 13:57:37 +0100 (Wed, 04 Feb 2015) | 6 lines

Created the new devel_scripts/memory_management/ directory.

This will be used for holding all of the memory C module leak detection, GUI object leak detection,
memory management, etc. development scripts.
........
r27507 | bugman | 2015-02-04 13:58:17 +0100 (Wed, 04 Feb 2015) | 3 lines

Shifted the memory_leak_test_GUI_uf.py script to devel_scripts/memory_management/GUI_uf_minimise_execute.py.
........
r27508 | bugman | 2015-02-04 14:12:22 +0100 (Wed, 04 Feb 2015) | 6 lines

Created a base class for the memory management scripts for the GUI user functions.

The core of the GUI_uf_minimise_execute.py script has been converted into the GUI_base.py base class
module. This will allow for new GUI user function testing scripts to be created.
........
r27509 | bugman | 2015-02-04 14:15:25 +0100 (Wed, 04 Feb 2015) | 3 lines

Removal of unused imports from the GUI user function memory testing scripts.
........
r27510 | bugman | 2015-02-04 14:18:26 +0100 (Wed, 04 Feb 2015) | 3 lines

Created a script for testing the memory management when calling the time GUI user function.
........
r27511 | bugman | 2015-02-04 15:32:44 +0100 (Wed, 04 Feb 2015) | 19 lines

Large memory management improvement for the relax GUI wizards and GUI user functions.

The pympler.muppy based memory management scripts in devel_scripts/memory_management for testing the
GUI user function windows was showing that for each GUI user function call, 28 wx._core.BoxSizer
elements were remaining in memory. This was traced back to the gui.wizards.wiz_objects.Wiz_window
class, specifically the self._page_sizers and self._button_sizers lists storing wx.BoxSizer
instances.

The problem was that 16 page sizers and 16 button sizers were initialised each time for later use,
however the add_page() method only added a small subset of these to the self._main_sizer wx.BoxSizer
object. But the Destroy() method was only capable of destroying the wx.BoxSizer instances
associated with another wxPython object. The fix was to add all page and button sizers to the
self._main_sizer object upon initialisation.

This will solve many memory issues in the GUI, especially in the GUI tests on Mac OS X systems
causing 'memory error' or 'bus error' messages and on MS Windows due to 'USER Object' and 'GDI
object' limitations.
........
r27512 | bugman | 2015-02-04 15:49:30 +0100 (Wed, 04 Feb 2015) | 5 lines

The maximum number of pages in the GUI wizard is no longer hardcoded.

The max_pages argument has been added to allow this value to be changed.
........
r27513 | bugman | 2015-02-04 16:19:54 +0100 (Wed, 04 Feb 2015) | 10 lines

Fix for GUI wizards and GUI user functions.

The recent memory management changes caused the wizard windows to have an incorrect layout so that
the wizard pages were not visible. Reperforming a layout of the GUI elements did not help. The
solution is to not initialise sets of max_pages of wx.BoxSizer elements in the wizard __init__()
method, but to generate and append these dynamically via the add_page() method. The change now
means that there are no longer multiple unused wx.BoxSizer instances generated for each wizard
window created.
........
r27514 | bugman | 2015-02-04 16:22:22 +0100 (Wed, 04 Feb 2015) | 3 lines

Removed a debugging printout.
........
r27515 | bugman | 2015-02-04 16:28:04 +0100 (Wed, 04 Feb 2015) | 6 lines

Fix for the GUI wizard _go_next() method.

The way to determine if there are no more pages needs to be changed, as there are now no empty list
elements at the end of the wizard storage objects.
........
r27516 | bugman | 2015-02-04 16:35:58 +0100 (Wed, 04 Feb 2015) | 5 lines

Another fix for the now variable sized wizard page list.

This time the fix is in the GUI user function __call__() method.
........
r27517 | bugman | 2015-02-04 16:47:44 +0100 (Wed, 04 Feb 2015) | 5 lines

Fix for the default grid_inc argument for the relaxation curve-fitting auto-analysis.

This needs to be an integer.
........

2015-02-04 16:16:27 Tree
Older >
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.