Open main menu

Changes

Relax 3.3.2

3 bytes added, 10:35, 14 November 2014
Tracker links with full descriptions.
* Added instructions and a build script for creating a useful version of latex2html. This version is essential for building the HTML version of the manual at http://www.nmr-relax.com/manual/. The build script downloads the Debian latex2html-2008 sources as well as all Debian patches for latex2html. It then applies a number of patches for fixing and improving the relax documentation. The program is then compiled and can be installed as the root user into /usr/local/.
* Extended the number of words used in the HTML webpage file names. This is to hopefully prevent files from being overwritten by multiple files having the same name.
* Added the write out of parameters and chi2 values, when creating a dx_map. Task #7860 ([https://gna.org/task/index.php?7860)Task #7860: When dx_map is issued, create a parameter file which maps parameters to chi2 value].* Created system test Relax_disp.test_dx_map_clustered_create_par_file, which must show that relax is not able to find the local minimum under clustered conditions. When creating the map, the map contain chi2 values, which are lower than the clustered fitted values. This should not be the case. Running a larger map with larger bounds and more increments, which should show that there exist a minimum in the minimisation space with a lower chi2 value. Bug #22754 ([https://gna.org/bugs/index.php?22754)Bug #22754: The minimise.calculate() does not calculate chi2 value for clustered residues]. Task #7860 ([https://gna.org/task/index.php?7860)Task #7860: When dx_map is issued, create a parameter file which maps parameters to chi2 value].
* Renamed test scripts and files for producing surface chi2 plots.
* Renamed sample scripts making surface maps.
* Added scripts to make surface plots of spin independents parameters dw and R2a.
* Added example surface chi2 values for plots. Task #7826 ([https://gna.org/task/index.php?7826)Task #7826: Write an python class for the repeated analysis of dispersion data].
* Added example save state for more surface plotting.
* Added boolean argument to dx.map() function, to specify the creation of a parameter and associated chi2 values file. For very very special situations, the creation of this file is not desired.
* Added check to system test Relax_disp.test_cpmg_synthetic_dx_map_points() for the creation of a matplotlib surface command plot file.
* Added the write out of a matplotlib command file, to plot surfaces of a dx map. It uses the minimum chi2 value in the map space, to define surface definitions. It creates a X,Y; X,Z; Y,Z map, where the values in the missing dimension has been cut at the minimum chi2 value. For each map, it creates a projected 3d map of the parameters and the chi2 value, and a heat map for the contours. It also scatters the minimum chi2 value, the 4 smallest chi2 values, and maps any points in the point file, to a scatter point. Mapping the points from file to map points, is done by finding the shortest Euclidean distance in the space from the points to any map points.
* Fix for testing the raise of expected errors in system tests. The system test will not be tested, if Python version is under version 2.7. Bug #22801 ([https://gna.org/bugs/?22801)Bug #22801: Failure of the relax test suite on Python 2.5].
* Inserted a z_axis limit for the plotting of 2D surfaces in matplotlib.
* Added better figure control of chi2 values on z-axis for surface plots.
* 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 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 bug #22730 ([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 bug #22730 ([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.* Added printouts to the determine_rnd() function of the dauvergne_protocol model-free auto-analysis. This is for better user feedback in the log files as to what is happening. It may help in debugging bug #22730 ([https://gna.org/bugs/?22730)bug #22730: Model-free auto-analysis - relax stops and quits at the polate step].
* Alphabetical ordering of imports in the dauvergne_protocol model-free auto-analysis.
* Changed the model-free single spin optimisation title printouts. The specific_analyses.model_free.optimisation.spin_print() function has been deleted. It has instead been replaced by a call to lib.text.sectioning.subtitle(). This is to match the grid search setup title printouts and to differentiate these titles from those printed out by minfx being underlined by '~' characters.
* Improvement for all wizards and user functions in the relax GUI. The focus is now set on the currently displayed page of the wizard. This allows the keyboard to be active without requiring a mouse click. Now text can be instantly input into the first text control and the tab key can jump between elements. As the GUI user functions are wizards with a single page, this is a significant usability improvement for the GUI.
* The ESC character now closes all wizards and user functions in the relax GUI. By using an accelerator table set to the entire wizard window to catch the ESC keyboard event, the ESC key will cause the _handler_escape() method to be called which then calls the windows Close() method to close the window.
* Changed the logic for how the new analysis wizard in the GUI is destroyed. This relates to bug #22818 ([https://gna.org/bugs/?22818)bug #22818, the GUI test suite failures in MS Windows - PyAssertionError: C++ assertion "Assert failure"]. The Destroy() method has been added to the Analysis_wizard class to properly close all elements of the wizard. This is now called from the menu_new() method of the Analysis_controller class, which is the target of the menu item and toolbar button. To allow the test suite to use this, the menu_new() method now accepts the destroy boolean argument. The test suite can set this to False and then access the GUI elements after calling the method (however the Destroy() method must be called by the test suite).* Resign of how the new analysis wizard is handled in the GUI tests. This relates to bug #22818 ([https://gna.org/bugs/?22818)bug #22818, the GUI test suite failures in MS Windows - PyAssertionError: C++ assertion "Assert failure"]. The GUI test base class method new_analysis_wizard() has been created to simplify the process. When a new analysis is desired, this method should be called. It will return the analysis page GUI element for use in the test. The method standardises the execution of the new analysis wizard and sets up the analysis in the GUI. It also properly destroys the wizard to avoid the memory leaking issues such as [https://gna.org/bugs/?22818 bug #22818]. All GUI tests have been converted to use new_analysis_wizard(). This allows the GUI tests to pass on MS Windows. However there are still significant sources of memory leaks (the USER Objects count) visible in the Windows Task Manager.
* Fix for the gui.fonts module to allow it to be used outside of the GUI.
* Updated all of the scripts in devel_scripts/gui/. These have been non-functional since the merger of the relax bieri_gui branch back in January 2011.
* Implemented the multiple molecule merging functionality of the 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 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 bug #22849 ([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 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 interatom.unit_vectors user function backend to handle missing atomic positions. This is to match the structure.load_spins user function change whereby missing atomic positions are now set to the value of None.
* Added printouts for the rdc.calc_q_factors and 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 bug #22860 ([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 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 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 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 bug #22861 ([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 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.
* Formatting improvements for the user function chapter of the HTML manual. This is for http://www.nmr-relax.com/manual/Alphabetical_listing_user_functions.html. This will hopefully fix the horrible formatting whereby all text is wrapped in the HTML tags <nowiki><SMALL CLASS="FOOTNOTESIZE"><SMALL CLASS="FOOTNOTESIZE"><SMALL CLASS="FOOTNOTESIZE"><SMALL CLASS="FOOTNOTESIZE"><SMALL CLASS="FOOTNOTESIZE"><SMALL CLASS="FOOTNOTESIZE"><SMALL CLASS="FOOTNOTESIZE"><SMALL CLASS="FOOTNOTESIZE"><SMALL CLASS="FOOTNOTESIZE"><SMALL CLASS="SCRIPTSIZE">text</SMALL></SMALL></SMALL></SMALL></SMALL></SMALL></SMALL></SMALL></SMALL></SMALL></nowiki>.
* Big bug fix for the text size formatting of the HTML manual. The previous fix for the user function chapter of the HTML manual (http://www.nmr-relax.com/manual/Alphabetical_listing_user_functions.html) did not fix the problem. The issue was with the {exampleenv} defined using a \newenvironment command in the preamble. The command \footnotesize was bing used in the start, but nothing was changing the font size at the end. In LaTeX, the ending of the environment appears to reset the font size, whereas in latex2html it does not. Therefore all text after this environment is prepended by <nowiki><SMALL CLASS="FOOTNOTESIZE"></nowiki> in the HTML manual and this keeps adding to the text after each new exampleenv environment.
* Fix for the poorly written User_functions.test_structure_add_atom GUI test. This fixes one part of 2 of the bug #22772 ([https://gna.org/bugs/?22772)bug #22772, the modelfree4 binary issue and the User_functions GUI tests with wxPython 2.9 failures of the test suite]. The problem was that a list element was being set in the GUI test, but that element did not exist yet. Somehow this worked in wxPython 2.8. But the bad code failed on wxPython 2.9.* Updated the Palmer.test_palmer_omp system test for the 64-bit Linux Modelfree 4.20 GCC binary file. This fixes the second part and last part of the bug #22772 ([https://gna.org/bugs/?22772)bug #22772, the modelfree4 binary issue and the User_functions GUI tests with wxPython 2.9 failures of the test suite]. The problem is that the 64-bit GNU/Linux GCC compiled binary of Modelfree 4.20 produces different results as previous versions. These are now caught by the system test and correctly checked.* Removal the use of OrderedDict(). OrderedDict is first available in python 2.7, and is not essential functionality. The functionality is replaced with looping over a list of dictionary keys instead, which is picked up under analysis. Bug #22798 ([https://gna.org/bugs/?22798)Bug #22798: Failure of relax to start due to an OrderedDict ImportError on Python 2.6 and earlier].* Fix for the find next bug in the relax controller window. This is bug #22815 ([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 bug #22816 ([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 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 bug #22849 ([https://gna.org/bugs/?22849). This is 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 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 structure.com user function. This fixes bug #22860 ([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 structure.write_pdb user function can now handle empty molecules. This fixes bug #22861 ([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 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 structure.delete user function for molecule metadata once no more data exists. This relates to bug #22861 ([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 bug #22937 ([https://gna.org/bugs/?22937). This is 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.* Fix for bug #22938 ([https://gna.org/bugs/?22938). This is bug #22938, the failure of the test suite in the relax GUI]. The problem was that the status.skip_blacklisted_tests variable did not exist - it was only initialised if relax is started in test suite mode. Now the value is always set from within the status module and defaults to True.
* Python 3 fixes for the relax codebase. These changes were made using the command: 2to3 -j 4 -w -f buffer -f idioms -f set_literal -f ws_comma -x except -x import -x imports -x long -x numliterals -x xrange .
* Python 3 fixes throughout relax, as identified by the 2to3 script. The command used was: 2to3 -j 4 -w -f except -f import -f imports -f long -f numliterals -f xrange .
Trusted, Bureaucrats
4,223

edits