Open main menu

Changes

Relax 3.3.7

53 bytes removed, 14:54, 13 March 2015
Links to all the trackers.
* Added some error checking for the monte_carlo.setup user function. A RelaxError is now raised if the number of simulations is less than 3. This prevents Python errors when later calling the monte_carlo.error_analysis user function.
* Test suite fixes for the error checking in the monte_carlo.setup user function. The number of simulations has been increased from either 1 or 2 in all tests to the minimal number of simulations (3).
* Created the Structure.test_bug_23293_missing_hetatm system test. This is to catch bug #23293 ([https://gna.org/bugs/?23293)bug #23293, the PDB HETATM loading error whereby the last HETATM record is sometimes not read from the PDB file].
* Small fix for the chain IDs in the Structure.test_bug_23293_missing_hetatm system test.
* Created the Structure.test_multi_model_and_multi_molecule system test. This is used to check the loading and writing of a multi-model and multi-molecule PDB file. The test shows that this functions correctly.
* Modified the Structure.test_multi_model_and_multi_molecule test to check for model consistency. This is just for better test suite coverage of the handling of PDB structural data.
* Created the Structure.test_bug_23294_multi_mol_automerge system test. This is used to catch bug #2329 ([https://gna.org/bugs/?23294)bug #2329, the automatic merging of PDB molecules resulting in an IndexError]. It reads in the 'in.pdb' PDB file attached to the bug report, now named 'bug_23294_multi_mol_automerge.pdb', to show the IndexError. The test also checks the structure.write_pdb user function to make sure that the output PDB file contains a single merged molecule.
* Added the PDB file to the repository for the Structure.test_bug_23294_multi_mol_automerge system test.
* Fix for the Structure.test_bug_23294_multi_mol_automerge system test. The MASTER PDB record has been added to the data to check for, as this will be produced by the structure.write_pdb user function.
* Improved the quality of the printouts from the structure.read_pdb user function. This also affects the structure.read_gaussian and structure.read_xyz user functions. The messages about adding new molecules or merging with existing molecules has been significantly improved. The text with the model information is now only printed if the model number is present in the PDB file or has been supplied by the user.
* Fixes for all of the PDB documentation HTML links in the docstrings. The PDB have shifted their documentation from http://www.wwpdb.org/documentation/format33/v3.3.html to http://www.wwpdb.org/documentation/file-format/format33/v3.3.html, stupidly without redirects. This will create dead links in the relax API documentation at http://www.nmr-relax.com/api/3.3/, as well as the older API documentation (http://www.nmr-relax.com/api/2.2/, http://www.nmr-relax.com/api/3.0/, http://www.nmr-relax.com/api/3.1/, http://www.nmr-relax.com/api/3.2/).
* Created the Structure.test_bug_23295_ss_metadata_merge system test. This is to catch bug #23295 ([https://gna.org/bugs/?23295)bug #23295, the PDB secondary structure HELIX and SHEET records not updated when merging molecules]. This uses the '2BE6_secondary_structure.pdb' structure file and 'test.py' relax script contents as the test, checking the HELIX and SHEET records.
* Added one more check to the Structure.test_bug_23295_ss_metadata_merge system test. The test would pass if no HELIX or SHEET records were to be written to the PDB file.
* Fix for the Structure.test_bug_23295_ss_metadata_merge system test and additional printouts.
* Added a new warning to the interatom.unit_vectors user function if data is missing. This is to aid in detecting problems earlier before unit vectors of None are encountered by other parts of relax.
* Modified the rdc.corr_plot user function to skip deselected interatomic data containers. This would normally happen as no back-calculated data is normally present. However, if data has been copied from elsewhere, this may not always be the case.
* Created the Sequence.test_bug_23372_read_csv system test. This is to catch bug #23372 ([https://gna.org/bugs/?23372)bug #23372, the sequence.read failure with CSV files]. It uses a truncated version of the CSV data file attached to sr #3219 ([https://gna.org/support/?3219)sr #3219].
* Converted the lib.sequence.validate_sequence() to the checking function design. This is the checking function design documented at http://wiki.nmr-relax.com/Relax_source_design#The_check_.2A.28.29_functions. The validate_sequence() function has been renamed to check_sequence_func() and the checking object is called check_sequence. It removes the string processing hack to convert RelaxErrors to RelaxWarnings in the lib.sequence.read_spin_data() function, avoiding strange messages such at "RelaxWarning: ror: The sequence data in the line..." as seen in the Sequence.test_bug_23372_read_csv system test.
* Small typo fix for the Sequence.test_bug_23372_read_csv system test.
* More fixes for the PCS count printout from the pipe_control.pcs.return_pcs_data() function. The check for None values was incorrect.
* Fixes for the N-state model num_data_points() function. The deselected interatomic data containers are no longer used for counting RDC data. And the skipping of deselected spin containers for the PCS is now via the spin_loop() skip_desel argument.
* Fix for bug #23259 ([https://gna.org/bugs/?23259). This is bug #23259, the broken user functions in the prompt UI with the RelaxError: The user function 'X' has been renamed to 'Y']. The problem was that the only the first part of the user function name, for example 'minimise' from 'minimise.calculate' was being checked in the user function name translation table. As the minimise user function has been renamed to minimise.execute, 'minimise' is in the translation table and hence minimise.calculate was being identified as the minimise user function. Now the full user function name is reconstructed before checking the translation table.
* Fixes for the lib.structure.internal.coordinates.assemble_coord_array() function. The problem was uncovered by the Structure.test_atomic_fluctuations_no_match system test. The function can now handle no data being passed in.
* Fixes for the pipe_control.structure.main.assemble_structural_coordinates() function. The function will now raise a RelaxError if no structural data matching the atom ID can be found. The problem was uncovered by the Structure.test_atomic_fluctuations_no_match system test. The fix affects the structure.atomic_fluctuations, structure.displacement, structure.find_pivot, structure.rmsd, structure.superimpose, and structure.web_of_motion user functions.
* Fix for bug #23265 ([https://gna.org/bugs/?23265). This is bug #23265, the failure of the edit buttons in the user function GUI windows]. The problem was that the column titles of the window opened by the edit button were being incorrectly handled if the dimensions of the window were not supplied.* Fix for bug #23288 ([https://gna.org/bugs/?23288). This is bug #23288, the failure of the structure.read_pdb user function when simultaneously merging multiple molecules from one file]. The set_mol_name and set_model_num arguments are now converted to lists equal to the length of the read_mol and read_model arguments simultaneously, if supplied.
* Small fix for the structure.write_pdb user function for handling old relax state and results files.
* Fix for bug #23293 ([https://gna.org/bugs/?23293). This is bug #23293, the PDB HETATM loading error whereby the last HETATM record is sometimes not read from the PDB file]. The problem was two-fold. Firstly the internal structural object _parse_mols_pdb() method for separating a PDB file into distinct molecules was terminating too early when a new molecule is found, so that the last PDB record is not appended to the records list for the molecule. Secondly the write_pdb() method was not handling the PDB sequential serial number correctly.* Fix for bug #23294 ([https://gna.org/bugs/?23294). This is bug #23294, the automatic merging of PDB molecules resulting in an IndexError]. Now if only a single molecule name is supplied, this will be used for all molecules in the PDB file. The result is that the structural data will all be automatically merged into a single molecule. This merging is communicated to the user via the current printouts.
* Bug fix for the SHEET PDB records created by the structure.write_pdb user function. The current and previous atom parts of the record were not being correctly formatted. This was simply using the %4s formatting string. However the PDB atom format is rather more complicated. To handle this, the new _handle_atom_name() helper function has been added to the lib.structure.pdb_write module. This is now used in the atom() and sheet() functions for consistently formatting the atom name field.
* Fix for bug #23295 ([https://gna.org/bugs/?23295). This is bug #23295, the PDB secondary structure HELIX and SHEET records not updating when merging molecules]. The problem was that the algorithm for changing the molecule numbers for the helix and sheet metadata when calling the structure.read_pdb user function was far too simplistic. Therefore the logic has been completely rewritten. Now the helix and sheet metadata are stored in temporary data structures in the _parse_pdb_ss() method. As the molecules are being read from the PDB records, new data structures containing the original molecule numbers and new molecule numbers are created. The helix and sheet metadata is then stored in the internal structural object via the pack_structs() method, and the molecule indices of the metadata changed based on the two molecule number remapping data structures.
* Python 3 fix for the new internal structural object MolContainer._sort() method. The list() builtin function is required to convert the output of the range() function into a true list in Python 3, so that the list.sort() method can be accessed.
* Python 3 fix for the Test_msa.test_central_star unit test. This is from the _lib._sequence_alignment.test_msa unit test module. The logic of range() + range() does not work in Python 3, so the range function calls are now wrapped in list() function calls to convert to the correct data structure type.
* Fixes for the rdc.calc_q_factors user function for when no alignment tensor is present. This was caught by the Rdc.test_calc_q_factors_no_tensor system test. Now if no tensor is present, a warning is given and the 2Da^2(4 + 3R)/5 normalised Q factor is skipped. Also, if present but no spin isotope information is present, then RelaxSpinTypeError errors are raised.
* Fix for the pcs.corr_plot user function when the spin containers have no element information.
* Fix for bug #23372 ([https://gna.org/bugs/?23372)bug #23372, the sequence.read failure with CSV files]. The problem was that the sep argument was not being passed all the way to the backend lib.io.extract_data() function.
* Fix for the lib.sequence.check_sequence checking object. Although rarely used, the check for the spin number was incorrect and half of the checks were instead for the residue number. This is a classic copy and paste error where the residue name and number checks were copied but not completely converted to spin name and numbers.
<section end=bugfixes/>
Trusted, Bureaucrats
4,228

edits