Author: bugman Date: Sat Jan 31 12:46:48 2015 New Revision: 27425 URL: http://svn.gna.org/viewcvs/relax?rev=27425&view=rev Log: Merged revisions 27377-27424 via svnmerge from svn+ssh://bugman@xxxxxxxxxxx/svn/relax/trunk ........ 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. ........ Added: branches/frame_order_cleanup/data_store/seq_align.py - copied unchanged from r27424, trunk/data_store/seq_align.py branches/frame_order_cleanup/test_suite/unit_tests/_data_store/test_seq_align.py - copied unchanged from r27424, trunk/test_suite/unit_tests/_data_store/test_seq_align.py Modified: branches/frame_order_cleanup/ (props changed) branches/frame_order_cleanup/data_store/__init__.py branches/frame_order_cleanup/gui/uf_objects.py branches/frame_order_cleanup/lib/selection.py branches/frame_order_cleanup/lib/sequence_alignment/msa.py branches/frame_order_cleanup/lib/structure/internal/coordinates.py branches/frame_order_cleanup/lib/structure/internal/object.py branches/frame_order_cleanup/lib/xml.py branches/frame_order_cleanup/pipe_control/structure/main.py branches/frame_order_cleanup/test_suite/system_tests/scripts/n_state_model/structure_align.py branches/frame_order_cleanup/test_suite/system_tests/sequence.py branches/frame_order_cleanup/test_suite/system_tests/structure.py branches/frame_order_cleanup/test_suite/unit_tests/_data_store/__init__.py branches/frame_order_cleanup/user_functions/structure.py [This mail would be too long, it was shortened to contain the URLs only.] Modified: branches/frame_order_cleanup/data_store/__init__.py URL: http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/data_store/__init__.py?rev=27425&r1=27424&r2=27425&view=diff Modified: branches/frame_order_cleanup/gui/uf_objects.py [... 35 lines stripped ...]