Changes

Jump to navigation Jump to search

Relax 3.3.0

684 bytes added, 18:33, 5 September 2014
m
→‎Changes: More links.
* Fixes for dead hyperlinks in the relaxation dispersion chapter of the relax manual. The B14 model links to http://www.nmr-relax.com/api/3.2/lib.dispersion.b14-module.html were broken as the B in B14 was capitalised.
* Sent in the verbosity argument value to the minfx.grid.grid_split() function. The minfx function in the next release (1.0.8) will now be more verbose, so this will help with user feedback when running the model-free analysis on a cluster or multi-core system using MPI.
* The [http://www.nmr-relax.com/manual/time.html time user function ] now uses the chronometer Oxygen icon in the GUI.
* Removed the line wrapping in the epydoc parameter section of the optimisation function docstrings. This is for the pipe_control.minimise module.
* More docstring line wrapping removal from pipe_control.minimise.
* Bug fix for the parameter units descriptions. This only affects a few rare parameters. The specific analysis API parameter object units() method was incorrectly checking if the units value is a function - it was checking the parameter conversion factor instead.
* Modified the [http://www.nmr-relax.com/manual/align_tensor_init.html align_tensor.init user function ] so that the parameters are now optional. This allows alignment tensors to be initialised without specifying the parameter values for that tensor.
* Modified profiling script to have different number of NCYC points per frequency. This is to complicate the data, so any erroneous reshaping of data is discovered. It is expected, that experiments can have different number of NCYC points per spectrometer frequency. Task #7807 (https://gna.org/task/?7807): Speed-up of dispersion models for clustered analysis.
* Initial try to alter the target function calc_CR72_chi2. This is the first test to restructure the arrays, to allow for higher dimensional computation. All numpy arrays have to have same shape to allow to multiply together. The dimensions should be [ei][si][mi][oi][di]. [Experiment][spins][spec. frq][offset][disp points]. This is complicated with number of disp point can change per spectrometer frequency. Task #7807 (https://gna.org/task/?7807): Speed-up of dispersion models for clustered analysis. This implementation brings a high overhead. The first test shows no winning of time. The creation of arrays takes all the time.
* Fix for the _prompt.test_align_tensor.Test_align_tensor.test_init_argfail_params unit test. As the alignment tensor can now be initialised as None, the None value can be accepted and a different RelaxError is raised when the params argument is incorrectly supplied.
* Added a new set of icons for use with the minimisation user functions. These are of the Rosenbrock function and are much better suited for small icons than the current OpenDX 3D isosurface plots. The matplotlib figure originates from public domain code at http://commons.wikimedia.org/wiki/File:Rosenbrock_function.svg.
* Redesign of the optimisation user functions calculate, grid_search, and minimise. In preparation for expanding the number of optimisation user functions, these three current user functions have been shifted into the new minimise user function class. The calculate calc user function is now accessed as [http://www.nmr-relax.com/manual/minimise_calculate.html minimise.calculate]. The grid search as [http://www.nmr-relax.com/manual/minimise_grid_search.html minimise.grid_search]. And minimisation is via the [http://www.nmr-relax.com/manual/minimise_execute.html minimise.execute user function[. The icon used for the new user function class is the Rosenbrock function or the banana optimisation problem. As this is such a radical change, a huge number of changes in the relax source code, the sample scripts, the user manual, and the test suite were required.* Created the new [http://www.nmr-relax.com/manual/minimise_grid_zoom.html minimise.grid_zoom user function]. This allows the grid zoom level to be set. The value is stored in the current data pipe and will be used later by the [http://www.nmr-relax.com/manual/minimise_grid_search.html minimise.grid_search user function].* The [http://www.nmr-relax.com/manual/minimise_grid_zoom.html minimise.grid_zoom user function ] now uses the zoom-in Oxygen icon.
* Created the Relax_fit.test_zooming_grid_search system test. This will be used to test the implementation of the zooming grid search. The relaxation curve-fitting analysis should be one of the fastest for testing this.
* Added the print_model_title() method to the specific analysis base API class. This will be used to format and print out the information returned by the model_info() API method.
* Created the parameter object infrastructure for adding the grid search lower and upper bounds. The _add() method now accepts the grid_lower and grid_upper keyword arguments, which can be either values or functions. These are then stored in the _grid_lower and _grid_upper class dictionaries. The public methods grid_lower() and grid_upper() have been added to return the value corresponding to the given parameter.
* Modified the specific analysis parameter object grid_lower() and grid_upper() methods. These now accept the model information from the model_loop() API method and send that into an grid lower and upper functions. These functions will require the information to pull out the correct spin, spin cluster, or other information from the current data pipe to determine what the bounds should be.
* Implemented infrastructure in the [http://www.nmr-relax.com/manual/minimise_grid_search.html grid_search user function ] in preparation for the zooming grid. The grid search backend now calls the new grid_bounds() function. This takes the lower and upper bounds as arguments, uses the specific API to determine the per-model parameter grid search bounds, and then returns a per model list of lower and upper bounds. The specific API get_param_names() and get_param_values() are called to obtain the current model parameter names and values, and then the parameter names and model info are used in the new parameter object grid_lower() and grid_upper() methods to obtain the bounds. This shifts all of the grid search bounds logic out of the specific analyses and into the grid search backend, so it should allow the specific analysis code to be simplified.* More modifications of the [http://www.nmr-relax.com/manual/minimise_grid_search.html minimise.grid_search user function ] backend. The grid_bounds() function has been renamed to grid_setup(), and it now accepts and processes the inc user function argument. The error checking code of the relaxation curve-fitting grid_search_setup() optimisation function has been shifted into this analysis independent grid_setup() function to shift the [http://www.nmr-relax.com/manual/minimise_grid_search.html minimise.grid_search user function ] error checking out of the specific analyses. The function now scales the parameter bounds, using the yet-to-be implemented scaling() method of the parameter object. And the grid search increments are converted into a per-model list of lists.
* Created the parameter object infrastructure for registering parameter scalings. The _add() method now accepts the scaling keyword argument, which can be either a value or function. This is then stored in the _scaling dictionary. The public method scaling() has been added to return the scaling factor corresponding to the given parameter.
* Modified the analysis specific API optimisation method. The base calculate(), grid_search() and minimise() methods now all accept the scaling_matrix argument, and the minimise() scaling argument has been removed. This scaling_matrix argument should be a per-model list of scaling matrices. To handle the change, the pipe_control.minimise.assemble_scaling_matrix() function has been created. This uses the new parameter object scaling values to create the list of scaling matrices. This will in the end replace all of the analysis specific assemble_scaling_matrix() functions and simplify their optimisation code paths.
* Changed the order of operations in the minimisation user function backends. The specific analysis API overfit_deselect() method needs to be called before any grid bounds, increments, or the scaling matrices are assembled. This is for the cases when the grid bounds or scaling factors are functions rather than values.
* Converted the relaxation curve-fitting analysis to the new grid bounds and scaling factor design. The parameter object now registers the grid bounds and scaling factors for all of the curve-fitting parameters. This includes three functions i_scaling(), i0() and iinf() in the specific_analyses.relax_fit.parameter_object module for calculating some of these values. The specific_analyses.relax_fit.parameters.assemble_scaling_matrix() function has been deleted as this is now provided by the upstream code in pipe_control.minimise. And the API methods grid_search() and minimise() has been modified to accept the list of scaling matrices. As the grid bounds and increments are now handled by the upstream pipe_control.minimise.grid_setup() function, the specific_analyses.relax_fit.optimisation.grid_search_setup() function was redundant and was deleted.
* Created the consistency testing specific API method get_param_names(). This is now required for the [http://www.nmr-relax.com/manual/minimise_calculate.html minimise.calculate user function], specifically for the analysis independent assemble_scaling_matrix() function. The get_param_names() method simply returns the fixed list of parameter names.
* Standardisation of the specific analysis API with respect to the model_loop() and base_data_loop(). The model information arguments for the data returned by model_loop(), and the data arguments for the data arguments for the data returned by base_data_loop() have been standardised throughout the API.
* Epydoc parameter order rearrangement in the specific analysis API base class.

Navigation menu