Changes

Jump to navigation Jump to search

Relax 3.3.6

8,663 bytes added, 23:36, 4 February 2015
API documentation links.
<section begin=description/>
This is a major minor feature and bugfix release. It includes the addition of the new [http://www.nmr-relax.com/manual/structure_sequence_alignment.html 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 [http://www.nmr-relax.com/manual/structure_align.html structure.align], [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations], [http://www.nmr-relax.com/manual/structure_com.html structure.com], [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement], [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot], [http://www.nmr-relax.com/manual/structure_mean.html structure.mean], [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd], [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] and [http://www.nmr-relax.com/manual/structure_web_of_motion.html 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 [http://www.nmr-relax.com/manual/structure_sequence_alignment.html structure.sequence_alignment user function] has not been used. This version also fixes a system test failure on Mac OS X and I<sub>&infin;</sub> parameter text files and Grace graphs are produced by the relaxation curve-fitting auto-analysis for the inversion recovery and saturation recovery experiment types.
<section end=description/>
<section begin=changes/>
* Spelling fixes for the CHANGES document.
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_molecules2 Structure.test_align_molecules2 system test]. This is to demonstrate a failure condition in the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].* Large simplification of the atomic coordinate assembly code in the internal structural object. This is in the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array 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 [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_molecules2 Structure.test_align_molecules2 system test].* Fix for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_displacement Structure.test_displacement system test ] - the molecule IDs needed updating.* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_molecules_end_truncation 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 [http://www.nmr-relax.com/manual/structure_align.html structure.align] and other multiple structure based user functions.* Created empty unit test infrastructure for testing the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html lib.structure.internal.coordinates module].* Created the Test_coordinates.test_common_residues unit test. This is from the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._structure._internal.test_coordinates-module.html _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.
* 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.
* Created the Test_align_protein.test_align_multiple_from_pairwise unit test. This is in the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_align_protein.Test_align_protein-class.html _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.* Simplified the Test_coordinates.test_common_residues unit test by removing many residues. This is from the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._structure._internal.test_coordinates-module.html _lib._structure._internal.test_coordinates unit test module].* Expanded the docstring of the Test_align_protein.test_align_multiple_from_pairwise unit test. This is from the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_align_protein.Test_align_protein-class.html _lib._sequence_alignment.test_align_protein unit test module].
* Attempt at fixing the lib.structure.internal.coordinates.common_residues() function. This function still does not work correctly.
* Renamed the Test_align_protein.test_align_multiple_from_pairwise unit test. This is now the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_msa.Test_msa-class.html#test_central_star Test_msa.test_central_star unit test ] of the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_msa-module.html _lib._sequence_alignment.test_msa unit test module ] (it was originally in the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_align_protein.Test_align_protein-class.html _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 [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.msa-module.html#central_star lib.sequence_alignment.msa.central_star() function].
* Added the lib.sequence_alignment.align_protein.align_multiple_from_pairwise() function. This should have been committed earlier. The function is only partly implemented.
* Initial [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.msa-module.html#central_star lib.sequence_alignment.msa.central_star() function]. This was moved from lib.sequence_alignment.align_protein.align_multiple_from_pairwise().* Import fix for the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_align_protein.Test_align_protein-class.html _lib._sequence_alignment.test_align_protein unit test module].* Added the verbosity argument to [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.align_protein-module.html#align_pairwise lib.sequence_alignment.align_protein.align_pairwise()]. If set to zero, all printouts are suppressed.* The Needleman-Wunsch sequence alignment algorithm now calculates and returns an alignment score. This is in the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.needleman_wunsch-module.html#needleman_wunsch_align 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.* The protein pairwise sequence alignment function now returns the alignment score. This is in the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.align_protein-module.html#align_pairwise lib.sequence_alignment.align_protein.align_pairwise() function]. The score from the Needleman-Wunsch sequence alignment algorithm is simply passed along.* Fix for the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_msa.Test_msa-class.html#test_central_star Test_msa.test_central_star unit test]. This is from the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_msa-module.html _lib._sequence_alignment.test_msa unit test module]. Some of the real gap matrix indices were incorrect.* 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 [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_msa.Test_msa-class.html#test_central_star Test_msa.test_central_star unit test ] of the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_msa -module.html _lib._sequence_alignment.test_msa module].* Fixes for the unit tests of the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_align_protein.Test_align_protein-class.html _lib._sequence_alignment.test_align_protein module]. The [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_align_protein.Test_align_protein-class.html#test_align_pairwise_PAM250 Test_align_protein.test_align_pairwise_PAM250 unit test ] was accidentally duplicated due to a copy and paste error. And the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.align_protein-module.html#align_pairwise lib.sequence_alignment.align_protein.align_pairwise() function ] now also returns the alignment score.* Fixes for the unit tests of the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_needleman_wunsch -module.html _lib._sequence_alignment.test_needleman_wunsch module]. The [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.needleman_wunsch-module.html#needleman_wunsch_align lib.sequence_alignment.needleman_wunsch.needleman_wunsch_align() function ] now returns the alignment score.* The [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array assemble_coord_array() function ] is now using the central star multiple sequence alignment. This is the function from the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates -module .html lib.structure.internal.coordinates module] used to assemble common atomic coordinate information, used by the [http://www.nmr-relax.com/manual/structure_align.html structure.align], [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations], [http://www.nmr-relax.com/manual/structure_com.html structure.com], [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement], [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot], [http://www.nmr-relax.com/manual/structure_mean.html structure.mean], [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd], [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] and [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion] user functions. The non-functional lib.structure.internal.coordinates.common_residues() function has been removed as the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.msa-module.html#central_star lib.sequence_alignment.msa.central_star() function ] performs this functionality correctly.* Deleted the Test_coordinates.test_common_residues unit test. This is from the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._structure._internal.test_coordinates-module.html _lib._structure._internal.test_coordinates unit test module]. The lib.structure.internal.coordinates.common_residues() function no longer exists.
* Alphabetical ordering of all Structure system tests.
* Better printout spacing in [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.msa-module.html#central_star lib.sequence_alignment.msa.central_star()].* Fixes for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_molecules_end_truncation Structure.test_align_molecules_end_truncation system test]. This system test had only been partly converted from the old [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_molecules2 Structure.test_align_molecules2 system test ] it had been copied from.* Created the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.selection.Internal_selection-class.html#count_atoms Internal_selection.count_atoms() internal structural object selection method]. This counts the number of atoms in the current selection.
* Added final printouts to the [http://www.nmr-relax.com/manual/structure_rotate.html structure.rotate] and [http://www.nmr-relax.com/manual/structure_translate.html 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 [http://www.nmr-relax.com/manual/structure_align.html structure.align] and [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] user functions.
* Corrections for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_CaM_BLOSUM62 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.* Improvement for the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.msa-module.html#central_star lib.sequence_alignment.msa.central_star() function]. The strings and gap matrix returned by the function have been reordered to match the input sequences.* Modified the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_molecules_end_truncation Structure.test_align_molecules_end_truncation system test]. The calmodulin bound calciums are now deleted prior to the [http://www.nmr-relax.com/manual/structure_align.html 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.* Large speed up of the mol-res-spin selection object. The [http://www.nmr-relax.com/api/3.3/lib.selection.Selection-class.html#contains_mol Selection.contains_mol()], [http://www.nmr-relax.com/api/3.3/lib.selection.Selection-class.html#contains_res Selection.contains_res() ] and [http://www.nmr-relax.com/api/3.3/lib.selection.Selection-class.html#contains_spin Selection.contains_spin() ] methods of the [http://www.nmr-relax.com/api/3.3/lib.selection -module .html 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.* Created the new relax data store object for saving sequence alignments. This is in the new [http://www.nmr-relax.com/api/3.3/data_store.seq_align -module .html data_store.seq_align module] via the Seqence_alignments [http://www.nmr-relax.com/api/3.3/data_store.seq_align.Sequence_alignments-class.html Sequence_alignments object], subclassed from [http://www.nmr-relax.com/api/3.3/data_store.data_classes.RelaxListType-class.html RelaxListType], for holding all alignments and the [http://www.nmr-relax.com/api/3.3/data_store.seq_align.Alignment-class.html Alignment Element object], subclassed from [http://www.nmr-relax.com/api/3.3/data_store.data_classes.Element-class.html Element], for holding each individual alignment. The objects are currently unused.* Added the seq_align module to the [http://www.nmr-relax.com/api/3.3/data_store-module.html data_store package ] __all__ list.* Created the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._data_store.test_seq_align.Test_seq_align-class.html#test_alignment_addition Test_seq_align.test_alignment_addition unit test]. This is in the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._data_store.test_seq_align-module.html _data_store.test_seq_align unit test module]. This tests the setup of the sequence alignment object via the [http://www.nmr-relax.com/api/3.3/data_store.seq_align.Sequence_alignments-class.html#add data_store.seq_align.Sequence_alignment.add() method].* Fixes for the data_store.seq_align.Alignment.generate_id() method. These problems were identified by the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._data_store.test_seq_align -module .html _data_store.test_seq_align module] [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._data_store.test_seq_align.Test_seq_align-class.html#test_alignment_addition Test_seq_align.test_alignment_addition unit test].* Added the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._data_store.test_seq_align.Test_seq_align-class.html#test_find_alignment Test_seq_align.test_find_alignment ] and [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._data_store.test_seq_align.Test_seq_align-class.html#test_find_missing_alignment Test_seq_align.test_find_missing_alignment] unit tests. These are in the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._data_store.test_seq_align-module.html _data_store.test_seq_align unit test module]. They check the functionality of the currently unimplemented [http://www.nmr-relax.com/api/3.3/data_store.seq_align.Sequence_alignments-class.html#find_alignment Sequence_alignment.find_alignment() method ] which will be used to return pre-existing alignments.* Code rearrangement in the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._data_store.test_seq_align-module.html _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.* Implemented the [http://www.nmr-relax.com/api/3.3/data_store.seq_align.Sequence_alignments-class.html#find_alignment 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.* Shifted the data_store.seq_align.Alignment.generate_id() method into the relax library. It has been converted into the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#generate_id lib.structure.internal.coordinates.generate_id() function ] to allow for greater reuse.* 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 [http://www.nmr-relax.com/api/3.3/data_store.seq_align.Sequence_alignments-class.html data_store.seq_align.Sequence_alignments]). The system test also checks the XML saving and loading of the ds.sequence_alignments data structure.
* 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 [http://www.nmr-relax.com/manual/structure_sequence_alignment.html 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.
* Modified the Structure.test_sequence_alignment_molecules system test. Changed and expanded the arguments to the yet to be implemented [http://www.nmr-relax.com/manual/structure_sequence_alignment.html structure.sequence_alignment user function].
* 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.
* Created the frontend for the [http://www.nmr-relax.com/manual/structure_sequence_alignment.html structure.sequence_alignment user function]. This is based on the [http://www.nmr-relax.com/manual/structure_align.html 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).
* Modified the assemble_coordinates() function of the [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main -module.html pipe_control.structure.main module]. The function has been renamed to [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#assemble_structural_objects assemble_structural_objects()]. The call to the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array lib.structure.internal.coordinates.assemble_coord_array() function ] has also been shifted out of [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#assemble_structural_objects assemble_structural_objects() ] to simplify the logic and decrease the amount of arguments passed around.* Spun out the atomic assembly code of the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array assemble_coord_array() function]. The code from the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array lib.structure.internal.coordinates.assemble_coord_array() function ] has been shifted to the new [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_atomic_coordinates assemble_atomic_coordinates()]. This is to simplify [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array assemble_coord_array() ] as well as to isolate the individual functionality for reuse.
* Implemented the backend of the [http://www.nmr-relax.com/manual/structure_sequence_alignment.html 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.
* Fixes for the sequence alignment objects for the relax data store. The [http://www.nmr-relax.com/api/3.3/data_store.seq_align.Sequence_alignments-class.html Sequence_alignments(RelaxListType) ] and [http://www.nmr-relax.com/api/3.3/data_store.seq_align.Alignment-class.html Alignment(Element) ] classes were not being set up correctly. The container names and descriptions were missing.
* 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.
* Fixes for handling the sequence_alignments data store object.
* Implemented the data store [http://www.nmr-relax.com/api/3.3/data_store.seq_align.Sequence_alignments-class.html#from_xml Sequence_alignments.from_xml() method]. This method is required for being able to read [http://www.nmr-relax.com/api/3.3/data_store.data_classes.RelaxListType-class.html RelaxListType objects ] from the XML file.* Modified the data returned by [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_atomic_coordinates 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.* Updates for the [http://www.nmr-relax.com/manual/structure_sequence_alignment.html structure.sequence_alignment user function]. This is for the changes to the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_atomic_coordinates 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.
* Updates for the Structure.test_sequence_alignment_molecules system test. This is required due to the changes in the backend of the [http://www.nmr-relax.com/manual/structure_sequence_alignment.html structure.sequence_alignment user function].
* Merger of the [http://www.nmr-relax.com/manual/structure_align.html structure.align] and [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] user functions. The final user function is called [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose]. As the sequence alignment component of the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] has been shifted into the new [http://www.nmr-relax.com/manual/structure_sequence_alignment.html 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.
* Fix for the [http://www.nmr-relax.com/manual/structure_sequence_alignment.html structure.sequence_alignment user function]. The alignment data should be stored in ds.sequence_alignments rather than ds.sequence_alignment.
* 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.
* 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 [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array 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 [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array 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.
* Updated the [http://www.nmr-relax.com/manual/structure_displacement.html 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.
* Updated the [http://www.nmr-relax.com/manual/structure_find_pivot.html 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.
* Updated the [http://www.nmr-relax.com/manual/structure_web_of_motion.html 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.
* Fix for the [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose user function] if no data pipes are supplied. This reintroduces the pipes list construction.
* Fix for the new pipe_control.structure.main.assemble_structural_coordinates() function. The atom_id argument is now passed into the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_atomic_coordinates assemble_atomic_coordinates() function ] of the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html lib.structure.internal.coordinates module ] so that atom subsets are once again recognised.
* 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.
* 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.
* 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.
* 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.
* The [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_atomic_coordinates assemble_atomic_coordinates() function ] now calls one_letter_codes() with the selection object. This is the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html lib.structure.internal.coordinates module ] function.
* 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.
* 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.
* Corrections and simplifications for the Structure.test_sequence_alignment_residue_number system test.
* Modified the [http://www.nmr-relax.com/manual/structure_sequence_alignment.html structure.sequence_alignment user function] arguments. The pairwise_algorithm and matrix arguments can no be None, and they default to None.
* Updated the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_CaM_BLOSUM62 Structure.test_align_CaM_BLOSUM62 system test ] script. The MSA algorithm and pairwise alignment algorithms are now specified in the [http://www.nmr-relax.com/manual/structure_sequence_alignment.html structure.sequence_alignment user function] calls.
* Creation of the lib.sequence_alignment.msa.msa_general() function. This consists of code from the [http://www.nmr-relax.com/manual/structure_sequence_alignment.html structure.sequence_alignment user function] backend function pipe_control.structure.main.sequence_alignment() for selecting between the different sequence alignment methods.
* The [http://www.nmr-relax.com/manual/structure_sequence_alignment.html 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.
* Printout fix for the backend of the [http://www.nmr-relax.com/manual/structure_translate.html structure.translate] and [http://www.nmr-relax.com/manual/structure_rotate.html structure.rotate] user functions. Model numbers of zero were not correctly identified. This also affects the [http://www.nmr-relax.com/manual/structure_align.html structure.align] and [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] user functions which uses this backend code.
* Another fix for the Internal_selection.count_atoms() internal structural object selection method.
* Small fix for the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array lib.structure.internal.coordinates.assemble_coord_array() function]. The termination condition for determining the residues in common between all structures was incorrect.
* The Structure.test_create_diff_tensor_pdb_oblate now uses oblate diffusion relaxation data. This fixes [https://gna.org/bugs/?23232 bug #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.
* 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.
Trusted, Bureaucrats
4,228

edits

Navigation menu