Changes

Jump to navigation Jump to search

Relax 3.3.2

2,167 bytes added, 10:42, 14 November 2014
User function HTML manual links.
* All wizards and user functions in the relax GUI now have focus so that keyboard is active without requiring a mouse click.
* The ESC key will now close the relax controller window and all user function windows.
* The [http://www.nmr-relax.com/manual/structure_load_spins.html structure.load_spins user function ] can now load spins from multiple non-identical molecules and merge them into one molecule allowing missing atoms and differential atom numbering to be handled.
* Improvements to the printouts for many user functions.
<section end=features/>
* Added the verbosity argument to the pipe_control.minimise.reset_min_stats() function. All of the minimisation code which calls this now send in their verbosity arguments. This allows the text "Resetting the minimisation statistics." to be suppressed.
* Added the verbosity argument to the pipe_control.value.set() function. This is passed into the pipe_control.minimise.reset_min_stats() function so its printouts can be silenced.
* The pipe_control.opendx space mapping code now calls the value.set() function with verbosity=0. This is to silence the very repetitive statistics resetting messages when executing the [http://www.nmr-relax.com/manual/dx_map.html dx.map user function].
* Added more checks to the determine_rnd() of the dauvergne_protocol model-free auto-analysis. This is to try to catch bizarre situations such as [https://gna.org/bugs/?22730 bug #22730, model-free auto-analysis - relax stops and quits at the polate step]. The following additional fatal conditions are now checked for: A file with the same name as the base model directory already exists; The base model directory is not readable; The base model directory is not writable. The last two could be caused by file system corruptions. In addition, the presence of the base model directory is checked for using os.path.isdir() rather than catching errors coming out of the os.listdir() function. These changes should make the analysis more robust in the presence of 'strangeness'.
* Added an additional check to determine_rnd() of the dauvergne_protocol model-free auto-analysis. This is to try to catch bizarre situations such as [https://gna.org/bugs/?22730 bug #22730, model-free auto-analysis - relax stops and quits at the polate step]. The additional check is that if the base model directory is not executable, a RelaxError is raised.
* Created the Periodic_table.has_element() method for the lib.periodic_table module. This is used to simply check if a given symbol exists as an atom in the periodic table.
* Added 4 unit tests to the _lib.test_periodic_table module for the Periodic_table.has_element() method.
* Modified the internal structural object backend for the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function]. The MolContainer._det_pdb_element() method for handling PDB files with missing element information has been updated to use the Periodic_table.has_element() method to check if the PDB atom name corresponds to any atoms in the periodic table. This allows for far greater support for HETATOMS and all of the metals.* Created the Structure.test_load_spins_multi_mol system test. This is to test yet to be implemented functionality of the [http://www.nmr-relax.com/manual/structure_load_spins.html structure.load_spins user function]. This is the loading of spin information similar, but not necessarily identical molecules all loaded into the same structural model. For this, the from_mols argument will be added.* Fixes for the Structure.test_load_spins_multi_mol system test. The call to the [http://www.nmr-relax.com/manual/structure_load_spins.html structure.load_spins user function ] has also been modified so that all 3 spins are loaded at the same time.* Implemented the multiple molecule merging functionality of the [http://www.nmr-relax.com/manual/structure_load_spins.html structure.load_spins user function]. The argument has been added to the user function frontend and a description added for this new functionality. In the backend, the pipe_control.structure.main.load_spins() function will now call the load_spins_multi_mol() function if from_mols is supplied. This alternative function is required to handle missing atoms and differential atom numbering.* Modified the N_state_model.test_populations system test to test the grid search code paths. This performs a grid search of one increment after minimisation, then switches to the 'fixed' N-state model and performs a second grid search of one increment. This now tests currently untested code paths in the grid_search() API method behind the [http://www.nmr-relax.com/manual/minimise_grid_search.html minimise.grid_search user function]. The test demonstrates a bug in the N-state model which was not uncovered in the test suite.
* Created the N_state_model.test_CaM_IQ_tensor_fit system test. This is for catching [https://gna.org/bugs/?22849 bug #22849, the failure of the N-state model analysis when optimising only alignment tensors using RDCs and/or PCSs]. This new test checks code paths unchecked in the rest of the test suite, and is therefore of high value.
* Modified the atomic position handling in pipe_control.structure.main.load_spins_multi_mol(). The multiple molecule merging functionality of the [http://www.nmr-relax.com/manual/structure_load_spins.html structure.load_spins user function ] now handles missing atomic positions differently. The aim is that the length of the spin container position variable is fixed for all spins to the number of structures, as the N-state model analysis assumes this equal length for all spins. When data is missing, the atomic position for that structure is now set to None. This will require other modifications in relax to support this new design.* Modified the [http://www.nmr-relax.com/manual/interatom_unit_vectors.html interatom.unit_vectors user function ] backend to handle missing atomic positions. This is to match the [http://www.nmr-relax.com/manual/structure_load_spins.html structure.load_spins user function ] change whereby missing atomic positions are now set to the value of None.
* Fix for the atomic position handling in pipe_control.structure.main.load_spins_multi_mol(). The dimensionality of the position structure returned by the structural object atom_loop() method needed to be reduced.
* The [http://www.nmr-relax.com/manual/structure_load_spins.html structure.load_spins user function ] now stores the number of states in cdp.N. This is to help the specific analyses which handle ensembles of structures. With the introduction of the from_mols argument to the [http://www.nmr-relax.com/manual/structure_load_spins.html structure.load_spins user function], the number of states is now not equal to the number of structural models, as the states can now come from different structures of the same model. Therefore the user function will now explicitly set cdp.N to the number of states depending on how the spins were loaded.
* Clean up and speed up of the N_state_model.test_CaM_IQ_tensor_fit system test. All output files are now set to 'devnull' so that the system test no longer creates any files within the relax source directories. And the optimisation settings have been decreased to hugely speed up the system test.
* Expanded the lib.arg_check.is_float_matrix() function by adding the none_elements argument. This matches a number of the other module functions, and allows for entire rows of the matrix to be None.
* Lists of lists containing rows of None are now better supported by the lib.xml functions. The object_to_xml() function will now convert the float parts to IEEE-754 byte arrays, and the None parts will be stored as None in the <ieee_754_byte_array> list node. The matching xml_to_object() method has also been modified to read in this new node format. This affects the [http://www.nmr-relax.com/manual/results_write.html results.write ] and [http://www.nmr-relax.com/manual/state_save.html state.save ] user functions (as well as the [http://www.nmr-relax.com/manual/results_read.html results.read ] and [http://www.nmr-relax.com/manual/state_load.html state.load ] user functions).* Added spacing after the [http://www.nmr-relax.com/manual/minimise_grid_search.html minimise.grid_search user function ] setup printouts. This is for better spacing for the next messages from the specific analysis.
* Speed up of the N_state_model.test_CaM_IQ_tensor_fit system test. This test is however still far too slow.
* Added printouts to pipe_control.pcs.return_pcs_data() and pipe_control.rdc.return_rdc_data(). These functions now accept the verbosity argument which if greater than 0 will activate printouts of how many RDCs or PCSs have been assembled for each alignment. This will be useful for user feedback as the spin verses interatomic data container selections can be difficult to understand.
* The verbosity argument for the N-state model optimisation is now propagated for more printouts. The argument for the calculate() and minimise() API methods is now sent into specific_analyses.n_state_model.optimisation.target_fn_setup(), and from there into the pipe_control.pcs.return_pcs_data() and pipe_control.rdc.return_rdc_data() functions. That way the number of RDCs and PCSs used in the N-state model is reported back to the user for better feedback.
* Updated the N_state_model.test_CaM_IQ_tensor_fit system test so it operates correctly as a GUI test. All user functions are now executed through the special self._execute_uf() method to allow either the prompt interpreter or the GUI to execute the user function.
* Modified the N_state_model.test_CaM_IQ_tensor_fit system/GUI test for implementing a new feature. The 'spin_selection' argument has been added to the [http://www.nmr-relax.com/manual/interatom_define.html interatom.define user function]. This will be used to carry the spin selections over into the interatomic data containers.* Implemented the spin_selection Boolean argument for the [http://www.nmr-relax.com/manual/interatom_define.html interatom.define user function]. This has been added to the frontend with a description, and to the backend. When set, it allows the spin selections to define the interatomic data container selection.* Changed the spin_selection argument default in the [http://www.nmr-relax.com/manual/interatom_define.html interatom.define user function ] backend. This now defaults to False to allow other parts of relax which call this function to operate as previously. The default for the [http://www.nmr-relax.com/manual/interatom_define.html interatom.define user function ] is however still True.
* Modified the Structure.test_load_spins_multi_mol system test for the spin.pos variable changes. The atomic position for an ensemble of structures is now set to None rather than being missing, so the system test has been updated to check for this.
* The [http://www.nmr-relax.com/manual/align_tensor_display.html align_tensor.display user function ] now has more consistent section formatting. The section() and subsection() functions of the lib.text.sectioning module are now being used to standardise these custom printouts with the rest of relax.* Modifications to the new N_state_model.test_CaM_IQ_tensor_fit system test. The system test now checks all of the optimised values to make sure the correct values have been found. That will block any future regressions in this N-state model code path. The system test is now also faster. And the [http://www.nmr-relax.com/manual/pcs_structural_noise.html pcs.structural_noise user function ] RMSD value has been set to 0.0 so that the test no longer has a random component affecting the final optimised values.* Added printouts for the [http://www.nmr-relax.com/manual/rdc_calc_q_factors.html rdc.calc_q_factors ] and [http://www.nmr-relax.com/manual/pcs_calc_q_factors .html pcs.calc_q_factors] user functions. These are activated by the new verbosity user function argument which defaults to 1. If the value is greater than 0, then the backend will print out all the calculated Q factors.
* The verbosity argument of the RDC and PCS q_factors() functions now defaults to 1. This causes the Q factors to be printed out at the end of all N-state model optimisations.
* Created the Structure.test_bug_22860_CoM_after_deletion system test. This is to catch [https://gna.org/bugs/?22860 bug #22860, the failure of the structure.com user function after calling structure.delete].
* Fix for the checks in the new Structure.test_load_spins_multi_mol system test. A spin index was incorrect.
* Fix for the [http://www.nmr-relax.com/manual/structure_load_spins.html structure.load_spins user function ] when the from_mols argument is used. The load_spins_multi_mol() function of the pipe_control.structure.main module was incorrectly handling the atomic position returned by the internal structural object atom_loop() method. This position is a list of lists when multiple models are present. But when only a single model is present, it returns a simple list.* Modified the Structure.test_bug_22860_CoM_after_deletion system test to expect a RelaxNoPdbError. This tests that the [http://www.nmr-relax.com/manual/structure_com.html structure.com user function ] raises RelaxNoPdbError after deleting all of the structural information from the current data pipe.* The mol_name argument is now exposed in the [http://www.nmr-relax.com/manual/structure_add_atom.html structure.add_atom user function]. This has been added as the first argument of the user function to allow new molecules to be created or to allow the atom to be placed into a specific molecule container. The functionality was already implemented in the backend, so it has been exposed by simply adding a new argument definition to the user function.
* Created the Structure.test_bug_22861_PDB_writing_chainID_fail system test. This is to catch [https://gna.org/bugs/?22861 bug #22861, the chain IDs in the structure.write_pdb user function PDB files are incorrect after calling structure.delete].
* Small modification of the Structure.test_bug_22861_PDB_writing_chainID_fail system test. File metadata is now being set to demonstrate that the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function ] does not remove this once there is no more data left for the molecule.
* Small indexing fixes for the dispersion chapter of the relax manual.
* Fix for system test Relax_disp.test_cpmg_synthetic_dx_map_points. Another import line was written to the matplotlib script.
* Speedup and fix for system test Relax_disp.test_dx_map_clustered_create_par_file. The following test was taken out, since this a particular interesting case. There exist a double minimum, where relax has not found the global minimum. This is due to not grid searching for R2a, but using the minimum value.
* Removed debugging code from the N_state_model.test_CaM_IQ_tensor_fit system test. This was an accidentally introduced [http://www.nmr-relax.com/manual/state_save.html state.save user function ] used to catch the system test state. It would results in the 'x.bz2' file being dumped in the current directory.
* Loosened the checks in the Relax_disp.test_baldwin_synthetic_full system test. This is to allow the test to pass on Python 2.5 and 3.1 on a 32-bit GNU/Linux system.
* Fix for the Relax_disp.test_cpmg_synthetic_dx_map_points system test for certain systems. This change is to allow the test to pass on Python 2.5 and 3.1 on a 32-bit GNU/Linux system. This may be related to 32-bit numpy 1.6.2 verses later numpy versions causing precision differences.
* Expanded the Mac_framework_build_3way document to include matplotlib.
* Important bug fix for racing causing the GUI to freeze. This is really only seen in the GUI tests on MS Windows systems, as a user could never be fast enough with the mouse. The GUI interpreter flush() method for ensuring that all user functions in the queue have been cleared now calls wx.Yield() to force all wxPython events to also be flushed. This change will avoid random freezing of the relax test suite.
* Bug fix for the Mf.test_bug_21615_incomplete_setup_failure GUI test on MS Windows systems. The GUI interpreter flush() method needs to be called between the two [http://www.nmr-relax.com/manual/structure_load_spins.html structure.load_spins user function ] calls. Without this, the test will freeze on MS Windows. The freezing behaviour is however not 100% reproducible and is dependent on the Windows version and wxPython version.
* Shifted a number of wx.NewId() calls to the module namespace to conserve IDs. These are for the menus in the main window and in the spin view window.
* Shifted the wx.NewId() calls for the spectrum list GUI element to the module namespace. These IDs are used for the pop up menus. The change avoids repetitive calls to wx.NewId() every time a right click occurs, conserving wx IDs so that they are not exhausted when running the test suite or running the GUI for a long time.
* A small wx ID conserving change - the 'Execute' button in the analysis tabs now uses the ID of -1. A unique ID is not necessary and is unused.
* The user function class menus no longer have unique wx IDs, as these are unnecessary. This conserves the small pool of unique wx IDs, as the spin viewer window is created and destroyed.
* Bug fix for the [http://www.nmr-relax.com/manual/structure_load_spins.html structure.load_spins user function ] new from_mols argument. This was incorrectly using the pipe_control.pipes.pipe_names() function to obtain its default values in the GUI (although this is not currently uesd). The result was a non-fatal error message on Mac OS X systems of "Python[1065:1d03] *** __NSAutoreleaseNoPool(): Object 0x3a3944c of class NSCFString autoreleased with no pool in place - just leaking".
* Added a debugging Python version check to the devel_scripts/memory_leak_test_relax_fit.py script. This prevents the script from being executed with a normal Python binary.
* Created the blacklisted Noe.test_noe_analysis_memory_leaks GUI test. This long test can be manually run to help chase down memory leaks. This can be monitored using the MS Windows task manager, once the 'USER Objects' column is shown. If the USER Objects count reaches 10,000 in Windows, then no more GUI elements can be created and the user will see errors.
* Fix for the find next bug in the relax controller window. This is [https://gna.org/bugs/?22815 bug #22815, the failure of find next using F3 (or Ctrl-G on Mac OS X) in the relax controller window if search text has already been set]. The fix was simple, as the required flags are in the self.find_data class object (an instance of wx.FindReplaceData).
* Fix for find dialog in the relax controller window. This is for [https://gna.org/bugs/?22816 bug #22816, the find functionality of the relax controller window does not find text when using wxPython >= 2.9]. The find wxPython events are now bound to the find dialog rather than the relax controller window LogCtrl element for displaying the relax messages. This works on all wxPython versions.
* Bug fix for the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function ] for when no data pipes are supplied.
* Bug fix for the N-state model grid search when only alignment tensor parameters are optimised. The algorithm for splitting up the grid search to optimise each tensor separately, hence massively collapsing the dimensionality of the problem, was being performed incorrectly. The grid_search() API method inc, lower, and upper arguments are lists of lists, but were only being treated as lists.
* Final fix for [https://gna.org/bugs/?22849 bug #22849, the failure of the N-state model analysis when optimising only alignment tensors using RDCs and/or PCSs]. The alignment tensor is no longer initialised to zero values. This is to allow the skip_preset argument for the [http://www.nmr-relax.com/manual/minimise_grid_search.html minimise.grid_search user function ] to be operational for the N-state model, a feature introduced with the zooming grid search. The solution was to check for the uninitialised tensor in the minimise_setup_fixed_tensors() method of the specific_analyses.n_state_model.optimisation module.
* Bug fix for the lib.arg_check.is_float_matrix() function. The check for a numpy.ndarray data structure type was incorrect so that lists of numpy arrays were failing in this function. Rank-2 arrays were not affected.
* Fix for the [http://www.nmr-relax.com/manual/structure_com.html structure.com user function]. This fixes [https://gna.org/bugs/?22860 bug #22860, the failure of the structure.com user function after calling structure.delete]. The number of models in cdp.structure is now counted and if set to zero, RelaxNoPdbError will be raised.* The [http://www.nmr-relax.com/manual/structure_write_pdb.html structure.write_pdb user function ] can now handle empty molecules. This fixes [https://gna.org/bugs/?22861 bug #22861, the chain IDs in the structure.write_pdb user function PDB files are incorrect after calling structure.delete]. To handle this consistently, the internal structural object ModelContainer.mol_loop() generator method has been created. This loops over the molecules, yielding those that are not empty. The MolContainer.is_empty() method has been fixed by not checking for the molecule name, as that remains after the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function ] call while all other information has been removed. And finally the write_pdb() structural object method has been modified to use the mol_loop() method rather than performing the loop itself.* Fix for the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function ] for molecule metadata once no more data exists. This relates to [https://gna.org/bugs/?22861 bug #22861, the chain IDs in the structure.write_pdb user function PDB files are incorrect after calling structure.delete]. The metadata, when it exists, is now deleted for the molecule once no more data is present.
* Fix for system test Relax_disp.test_bug_atul_srivastava. The call to the expected RelaxError needed to be performed differently for erlier python versions that 2.7.
* Fix for [https://gna.org/bugs/?22937 bug #22937, the failure of the Relax_disp.test_estimate_r2eff_err_auto system test on Python 2.5]. The test_suite/shared_data/dispersion/Kjaergaard_et_al_2013/1_setup_r1rho_GUI.py simply required a newline character at the end of the file so that it can be executed in Python 2.5.
Trusted, Bureaucrats
4,228

edits

Navigation menu