Open main menu

Changes

Relax 2.2.3

1,676 bytes added, 18:01, 11 September 2014
User function HTML manual links.
<section begin=changes/>
* The relax intro text now includes the repository URL for checked out code. This is for preserving better debugging and logging information, so that it is clear where the code comes from.
* Created the Structure.test_load_spins_mol_cat system test. This will be used to test a new 'mol_name_target' argument to the [http://www.nmr-relax.com/manual/structure_load_spins.html structure.load_spins user function].* Created the Structure.test_delete_multi_pipe system test. This is to check that the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function ] is operating on a single data pipe.
* Updated the Freecode instructions in the release checklist document.
* Created the simple Structure.test_delete_empty system test. This is to demonstrate a failure of the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function ] when no structural data is present.
* Added a printout to structure.delete for when no structures are present.
* Created the Structure.test_rmsd system test. This test checks the currently unimplemented [http://www.nmr-relax.com/manual/structure_add_model.html structure.add_model ] and [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd ] user functions.
* The structural API num_molecules() method can now handle no data being present.
* Implemented the [http://www.nmr-relax.com/manual/structure_add_model.html structure.add_model user function].
* Added some more checks to the Structure.test_rmsd system test.
* Modified the structure.add_model calls in the Structure.test_rmsd system test to include model nums.
* Added the 'model_num' argument to the [http://www.nmr-relax.com/manual/structure_add_model.html structure.add_model user function].* Modified the [http://www.nmr-relax.com/manual/structure_add_atom.html structure.add_atom user function ] to allow the position argument to be a rank-2 array. This allows a different coordinate for each model to be specified.
* Spun out the atomic_rmsd() and calc_mean_structure() functions into their own module. They were previously in the generic_fns.structure.superimpose module but are now in the new generic_fns.structure.statistics module.
* Added checks for the atomic information to the Structure.test_rmsd system test. This demonstrates a failure of [http://www.nmr-relax.com/manual/structure_add_atom.html structure.add_atom user function ] when specifying different positions for the different models.
* Docstring addition for the generic_fns.structure.statistics.atomic_rmsd() function.
* Implemented the [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd user function].
* Fixes for the Structure.test_rmsd system test - it now passes.
* Created a new float_object argument type which is used by the 'pos' argument of structure.add_atom. A new arg_check.float_object() function has been created to handle any float object greater than rank-0.
* Created the Structure.test_rmsd_ubi system test to better check the [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd user function]. This uses the truncated ubiquitin ensemble in the test suite shared data directories. The RMSD matches the VMD 1.9.1 output.
* Added a new module generic_fns.structure.pdb_write for generating the PDB records. This decouples the formatting code from the internal structural obect. The PDB format has been updated to version 3.30. There is one function for each PDB record, allowing this to be easily extended and kept up to date.
* Created the generic_fns.structure.pdb_read module. This replaces the internal structural object _parse_pdb_record() method which was handling both ATOM+HETATM and CONECT records. It should allow greater flexibility in reading data out of other PDB records in the future. There is one function per PDB record type in this module.
* Epydoc docstring formatting for the generic_fns.structure.pdb_write modules. These large changes improve the API documentation at http://www.nmr-relax.com/api/.
* Created a unit test for the generic_fns.structure.pdb_write.model() function.
* Added a new PDB file with 3 models and a few atoms for testing of the [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion user function].* Created the Structure.test_web_of_motion_all system test. This is to check the new [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion user function].* The [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion user function ] can now handle file objects as well as file names as input.
* Small fixes for the Structure.test_web_of_motion_all system test.
* Created the Structure.test_web_of_motion_12 system test to show how model sets are currently ignored.
* Implemented the models argument for the [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion user function]. This was previously not being used and was caught by the Structure.test_web_of_motion_12 system test.* Created the Structure.test_web_of_motion_13 system test. This was just to be sure that the models argument was correctly handled by the [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion user function].* The [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot user function ] now accepts the func_tol argument. This is used to terminate the simplex optimisation when this function tolerance value is reached.
* Shifted the ensemble pivot finding target function into the maths_fns package.
* Added a sentence to the README file about the sample_scripts directory.
* Added a document detailing the possible future layout of relax's packages.
* The [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot user function ] now uses the logarithmic barrier function. This is for constrained optimisation and requires the newest minfx code. The pivot position is constrained within a box of +/- 1000 Angstroms from zero. This is needed for when the solution is an infinite line - i.e. a rotation axis and not a pivot point. Previously the simplex optimisation would head toward + or - infinity. But now with a logarithmic barrier, the simplex algorithm can stabilise and find a point on the axis very quickly, long before reaching the edges of the box.* The [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot user function ] now accepts the func_tol and box_limit arguments. This allows the function tolerance for the simplex optimisation to be specified, as well as the size of the box to constrain the pivot to be within.
* Initialised the lib.geometry package. This will be a library of all mathematics functions relating to geometry.
* Added empty packages to the unit tests for the lib and lib.geometry packages.
* Updated the maths_fns package __all__ list.
* Updated the test_suite.unit_tests package __all__ list to be more modern.
* The [http://www.nmr-relax.com/manual/n_state_model_number_of_states.html n_state_model.number_of_states user function ] no longer requires the N-state model to be defined. This was only needed to update the model information, and is skipped if not set.
* The generic_fns.structure.superimpose.find_centroid() function now prints out Euler angles as well.
* Large improvements to the checking for all the rdc and pcs user functions. The new methods check_pipe_setup() have been added to replace all other checking. This standardises all error checking and provides much better coverage. The results is that you will be much less likely to encounter a Python traceback when something is forgotten, and will be told via a RelaxError what is missing.
* The [http://www.nmr-relax.com/manual/rdc_back_calc.html rdc.back_calc ] and [http://www.nmr-relax.com/manual/pcs_back_calc.html pcs.back_calc ] user functions now warn if no data was calculated. This is to inform the user about problems at the place that they occur instead of later on with, for example, the creation of empty data files.
* Updated the float module to handle numpy floats. This makes the floatToBinaryString() function compatible with the numpy.float16 type.
* Removed the prune parameter from the backend of the [http://www.nmr-relax.com/manual/monte_carlo_error_analysis.html monte_carlo.error_analysis user function]. This was a dangerous parameter used to mimic the 'Trim' parameter from the Modelfree4 program. The result is bad statistics. The probable reason for the 'Trim' parameter was the failure of model-free models in the simulations, but this issue was solved using model elimination (see http://www.nmr-relax.com/refs.html#dAuvergneGooley06).
* Created the Structure.test_read_xyz_strychnine system test to demonstrate a bug in the XYZ parser. This is for the reading of XYZ structure files.
* Created the lib.text package for text manipulation. The first module will be the text formatting of tables.
* The spin_loop() function now uses generate_spin_id_unique() when the return_id flag is set. This ensures that the caller received a unique spin ID which can be used to retrieve the corresponding spin container.
* Improved the generic_fns.mol_res_spin.generate_spin_id_unique() function. This can now work with molecule, residue, and spin names and numbers alternatively to the containers supplied as arguments. For this to work, the return_molecule_by_name() function has been improved and the functions return_residue_by_info() and return_spin_by_info() have been added.
* The [http://www.nmr-relax.com/manual/pcs_read.html pcs.read user function ] backend now uses generic_fns.mol_res_spin.generate_spin_id_unique(). This allows the matching spin container to always be returned for storing the data.
* Large speed ups of the Bmrb system tests by the deletion of most of the residues. On one system, this cuts the time for all 3 Bmrb tests from 70 to ~12 seconds.
* Added the profile flag keyword argument to the relax startup script for Unix-like systems. This is to simplify the switching on of profiling.
* Large cleanup and bugfixes for the molecule, residue, and spin data structure metadata maintenance. The bugs fixed are important for non-protein molecules. For example is the spin name is not unique per residue, or per molecule if no residues are defined, many parts of relax would fail. All of the metadata_*() and spin_id_variants*() functions have been redesigned. It was also identified that metadata_prune() was being used by different parts of relax for two different purposes - the removal or pruning of metadata prior to the deletion of a data structure and the clean up of no longer valid metadata. These two goals conflicted resulting in unpredictable behaviour. Therefore the new metadata_cleanup() and spin_id_variants_cleanup() functions have been created and the two behaviours separated.
* Fix for the [http://www.nmr-relax.com/manual/bmrb_read.html bmrb.read user function ] for the recent molecule, residue and spin metadata improvements. The generic_fns.bmrb.generate_sequence() function now calls generic_fns.mol_res_spin.metadata_clean()to be sure that the metadata is correct. The problem is the structure of the BMRB file with no spin information in the entity record, hence the residues are created first and the spins much later in generate_sequence().
* Removed unused imports in the generic_fns.rdc module.
* The generic_fns.mol_res_spin.generate_spin_id_unique() function now handles missing spin containers. Previously if this function was used to generate a spin ID string of a spin not in the data store,it would fail. Now it generates an ID by defaulting to generate_spin_id().
* Modified the dauvergne_protocol model-free auto-analysis to aid in debugging. The write_results_dir argument has been added to allow the test suite to read from one directory in test suite shared data directories and redirect output to a temporary directory.
* The files from the Mf.test_bug_20563_missing_ri_error system test are now placed in a temporary directory. This is essential for the test suite to prevent files from going everywhere.
* The [http://www.nmr-relax.com/manual/frq_seq.html frq.seq user function ] units argument is no longer read-only. This is needed for some of the GUI tests in the frame_order_testing branch.
<section end=changes/>
<section begin=bugfixes/>
* Fixes for the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function]. This can now handle no data being present, the spin and interatomic data containers are now have their structural data properly deleted, and printouts have been added so the user knows what has happened.
* Bug fix for the arg_check.is_float_matrix() function for when the dimensions are not given.
* Fix for the [http://www.nmr-relax.com/manual/structure_add_atom.html structure.add_atom user function ] for the internal structural object. The atomic positions for each model are now correctly set.
* Formatting fixes for the generic_fns.structure.pdb_write module.
* Fix for the classic_style() method of the model-free specific Macro class. This was identified by the new Mf.test_bug_20531_molmol_macro_write_relaxfault system test, but would probably never be encountered by relax users. It is not related to the bug this test is trying to catch. The problem is if spins have model-free parameters set up but there is no model-free model initialised - then the Molmol and PyMOL macro creation would fail.
* Fix for [https://gna.org/bugs/?20563 bug #20563, the end failure of the model-free auto-analysis]. This was reported by [https://gna.org/users/stacy Stanislava Panova]. The problem was related to the Monte Carlo simulations. The generic_fns.monte_carlo.create_data() function is now asking for the errors associated with a certain data point, even if that data point does not exist. The solution was to check if the relaxation data ID string is present in spin.ri_data_err before accessing the key-value pair (in the specific API _return_error_relax_data() common method).
* Bug fix for the maintenance of the spin ID lookup table metadata. This is important for small molecules. Non-unique IDs were being placed into the lookup table,resulting in incorrect spin containers being sometimes used. Now the molecule container has the _res_name_count and _res_num_count metadata and the residue container the _spin_name_count and _spin_num_count structures. These are updated via metadata_update() and are used by the spin_id_variants() function to create a list of purely unique spin IDs.
* The spin_id argument to the [http://www.nmr-relax.com/manual/residue_delete.html residue.delete user function ] is no longer read-only. This allows spin ranges or other complicated IDs to be specified. This is needed for the Bmrb GUI tests to pass.
* Fix for the package __all__ list checking unit tests - *.pyc files are now skipped.
* Fix for one of the RelaxError messages from the SpinList.add_item() method.
Trusted, Bureaucrats
4,223

edits