Open main menu

Changes

Relax 4.0.0

34,344 bytes added, 20:40, 8 October 2020
m
→‎Links: Fix the broken Gna! forum link by switching to {{gna link}}.
{{lowercase title}}
{{infobox relax release| version = 4.0.0| prev = 3.3.9| next = 4.0.1| keywords = Frame order theory| type = Major feature| date = 7 October 2015| manual = yes}} == Description ==
<section begin=description/>
This is a major feature release for a new analysis type labelled 'frame order'. The frame order theory aims to unify all rotational molecular physics data sources via a single mechanical model. It is a bridging physics theory for rigid body motions based on the statistical mechanical ordering of reference frames. The previous analysis of the same name was an early iteration of this theory that was however rudamentary and non-functional. Its current implementation is for analysing RDC and PCS data from an internal alignment to interpret domain or other rigid body motions within a molecule or molecular complex.
<section end=description/>
== Download ==
<section begin=download/>
<section end=download/>
== CHANGES file ==
<section begin=metadata/>
<section end=metadata/>
=== Features ===
<section begin=features/>
<section end=features/>
=== Changes ===
<section begin=changes/>
* Updated the CaM frame order test model superimposition script. The [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose user function] is now correctly called. The output log file has been added to the repository as it contains the correct translation and Euler rotation information needed for the test models.
* Parameter update for the isotropic cone CaM frame order test model optimisation script. The Euler angles for the rotation about the motional pivot have been replaced by the translation vector and Euler angle CoM rotation parameters.
* Fix for a number of the frame order models which do not have parameter constraints. The [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.parameters-module.html#linear_constraints linear_constraint() function] was returning A, b = [], [] for these models, but these empty numpy arrays were causing the [https://gna.org/projects/{{minfx/ homepage}} minfx library] to fail. These values are now caught and the constraint algorithm turned off in the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.api.Frame_order-class.html#minimise minimise() specific API method].
* Increased the precision of all the data in the CaM frame order test data generation base script. These have all been converted from float16 to float64 numpy types.
* Fix for the RDC error setting in the CaM frame order test data generation base script. The rdc_err data structure is located in the interatomic data containers, no the spin containers.
* Fix for the pivots created by the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.data-module.html#generate_pivot specific_analyses.frame_order.data.generate_pivot() function]. This is for the double rotor model where the 1<sup>st</sup> mode of motion is about the 2<sup>nd</sup> pivot, and the 2<sup>nd</sup> mode of motion about the 1<sup>st</sup> pivot.
* Fixes for the cone geometric representation in the internal structural object. The representation can now be created if the given [http://www.nmr-relax.com/api/4.0/data_store.mol_res_spin.MoleculeContainer-class.html MoleculeContainer object] is empty.
* Refactored the frame order geometric motional representation code. The code of the specific_analyses.frame_order.geometric.[http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#create_geometric_rep specific_analyses.frame_order.geometric.create_geometric_rep() function] has been spun out into 3 new functions: [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#add_rotors add_rotors()], [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#add_axes add_axes()], and [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#add_cones add_cones()]. This is to better isolate the various elements to allow for better control. Each function now adds the atoms for its geometric representation to a separate molecule called 'axes' or 'cones'. The add_rotors() does not create a molecule as the [http://www.nmr-relax.com/api/4.0/lib.structure.represent.rotor-module.html#rotor lib.structure.represent.rotor.rotor_pdb() function] creates its own. As part of the rafactorisation, the neg_cone flag has been eliminated.
* Renamed the residues of the rotor geometric object representation. The rotor axis atoms now belong to the RTX residue and the propeller blades to the RTB residue. The 'RT' at the start represents the rotor and this will allow all the geometric objects to be better isolated.
* Improvements to the [http://www.nmr-relax.com/api/4.0/lib.structure.internal.object.Internal-class.html#_get_chemical_name internal structural object _get_chemical_name() method]. This now uses a translation table to convert the hetID or residue name into a description, for example as used in the PDB HETNAM records to give a human readable description of the residue inside the PDB file itself. The new rotor RTX and RTB residue names have been added to the table as well.
* Added a script for profiling the target function calls of the pseudo-ellipse frame order model.
* Added a timeit script and log file showing how numpy.cos() is 10 times slower than math.cos(). This is for single floats.
* Shifted the calculation of the &theta;<supsub>max</supsub> cone opening for the pseudo-ellipse outside of all loops. This is infrastructure change for potentially eliminating all of the looping for the PCS numeric integration in the future. It however slightly speeds up the pseudo-ellipse frame order model. Using 500 target function calls in the profiling_pseudo_ellipse.py script in test_suite/shared_data/frame_order/timings/, the time spent in the [http://www.nmr-relax.com/api/4.0/lib.frame_order.matrix_ops-module.html#pcs_pivot_motion_full_qr_int pcs_pivot_motion_full_qrint() function] decreases from 20.849 to 20.719 seconds.* Converted the torsionless pseudo-ellipse model to also use the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse-module.html#tmax_pseudo_ellipse_array tmax_pseudo_ellipse_array() function]. This allows the calculation of the pseudo-elliptic cone opening &theta;<supsub>max</supsub> to be shifted outside of all loops.
* Created a profiling script and log file for the isotropic cone frame order model. This shows where the slow points of the model are, using 2000 target function calls.
* Increased the function call number to 500 in the pseudo-ellipse frame order model profiling script. The profiling log file has also been added to show where the slowness is - specifically that the numeric PCS integration takes almost the same amount of time as the RDC frame order matrix construction using the scipy.integrate.quad() function.
* Turned on the optimisation flag for the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_cam_qr_int_free_rotor Frame_order.test_cam_free_rotor system test]. This is to activate code paths currently not tested by the test suite.
* Constraints are now properly turned off in the [http://www.nmr-relax.com/manual/minimise.html minimise user function] for the frame order analysis. The A and b matrices from [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.parameters-module.html#linear_constraints linear_constraints()] are now set to None if they are returned as empty arrays.
* Parallelised the frame order optimisation code to run on clusters or multi-core systems via OpenMPI. The optimisation code has been split into the three standard parts of the multi-processor: 1) [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation.Frame_order_memo-class.html Frame_order_memo] is the new [http://www.nmr-relax.com/api/4.0/multi.memo.Memo-class.html Memo object] used to store data on the master for use when data is returned from the slaves. 2) [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation.Frame_order_minimise_command-class.html Frame_order_minimise_command] is the [http://www.nmr-relax.com/api/4.0/multi.slave_commands.Slave_command-class.html Slave_command] which stored all required data for the optimisation, is pickled and sent to a slave, sets up the target function, and then performs optimisation. 3) [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation.Frame_order_result_command-class.html Frame_order_result_command] is the [http://www.nmr-relax.com/api/4.0/multi.misc.Result-class.html Result_command] initialised by the Slave_command on the slave for pickling and returning results to the master. To avoid pickling the target function class, which is not possible, the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#store_bc_data store_bc_data()] and [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#target_fn_data_setup target_fn_setup()] functions of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html specific_analyses.frame_order.optimisation module] have been redesigned to work with basic data structures rather than the target function class directly. The target_fn_setup() function no longer returns an initialised target function class, but rather all the data assembled prior to the initialisation. And the target function class was itself modified so that pcs_theta and rdc_theta are always defined to allow the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#store_bc_data store_bc_data() function ] to be used successfully. This parallelisation currently only allows the Monte Carlo simulations to be run on slave processors.
* The [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.parameters-module.html#linear_constraints frame order linear_constraints() function] now returns None if no constraints are present. This allows the code using this to be simplified with respect to turning off the constraints.
* Improvements for the printout at the start of optimisation of the frame order models. This is in the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#target_fn_data_setup target_fn_setup() frame order method]. All the printouts are now in one place and they are now better formatted and better controlled.
* Sent the verbosity argument to the minfx.grid.grid_split() function for the frame order analysis. This matches the relax trunk changes for the model-free analysis. 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.
* Improvements for the parallelised grid search for the frame order analysis. As each grid point can take wildly different numbers of CPU cycles to calculate the chi-squared value for, the result of subdividing the grid search was that some subdivisions where incredibly quick while others required much larger amounts of time. To avoid this bad slave management, the grid points are now randomised. This means that the subdivisions will require about the same amount of time to optimise.
* Moved the setup of the target function data structures in the frame order analysis. This is for the [http://www.nmr-relax.com/manual/grid_search.html grid_search] and [http://www.nmr-relax.com/manual/minimise.html minimise] user functions. The target function data setup function has been renamed to [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#target_fn_data_setup target_fn_data_setup()]. This is now called before the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation.Frame_order_grid_command-class.html Frame_order_grid_command] and [[http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation.Frame_order_minimise_command-class.html Frame_order_minimise_command] multi-processor objects are initialised, and all of the data is now passed into these functions. Although the code is uglier, this has the benefit that the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#target_fn_data_setup target_fn_data_setup() function] will only be called once. This data setup requires a lot of time, so for a large cluster, this can be a large time saving for the grid search.
* Modified the frame_order_free_start.py script to better mimic the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis].
* Updated the frame order optimisation results for the 2<sup>nd</sup> CaM free rotor test data. The optimisation in the frame_order.py is now of higher precision with the number of Sobol' numeric integration points significantly increased, especially for the Monte Carlo simulations. The new frame order representation files have been added to the repository, as well as the intermediate state files.
* The [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_auto_analysis Frame_order.test_auto_analysis system test] now writes all files to the directory of ds.tmpdir. This is to prevent the system test from dumping files in the current directory.
* Modified the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.parameters-module.html#update_model specific_analyses.frame_order.parameters.update_model() function]. This will no longer set all parameters to 0.0, excluding the pivot point.
 
 
 
 
 
 
 
 
* Modified the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.parameters-module.html#assemble_param_vector specific_analyses.frame_order.parameters.assemble_param_vector() function]. This can now handle the case of no parameters being present. The corresponding elements of the numpy array will consist of NaN values.
* Better handling of unset parameters in the frame order optimisation functions. The [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#target_fn_data_setup specific_analyses.frame_order.optimisation.target_fn_data_setup()] and [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.parameters-module.html#assemble_param_vector specific_analyses.frame_order.parameters.assemble_param_vector() function] both now accept the unset_fail argument. This is set in both the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.api.Frame_order-class.html#calculate calculate() ] and [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.api.Frame_order-class.html#minimise minimise() ] API methods. When set, a RelaxError will be raised in the assemble_param_vector() function when a parameter has not been set yet. This together with previous changes will prevent the frame order analysis from using 0.0 as a starting value for unset parameters.
* Fixes for all of the Frame_order.test_rigid_data_to_*_model system tests. The base script now sets all parameter values so that the [http://www.nmr-relax.com/manual/minimise_calculate.html minimise.calculate user function] can operate. The two free rotor model chi-squared values have been updated as these are sensitive to the motional eigenframe parameter values - these models can never approximate a rigid state.
* Modified the optimisation of the rigid model in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The grid search is now implemented as a zooming grid search.
* Updates and fixes for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The custom grid setup now works for the new reduced parameter set models and the double rotor model is now also included. The cone axis &alpha; angle to spherical angle conversion has had a bug removed. And some of the printouts are now more detailed.
* Redesigned the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_auto_analysis Frame_order.test_auto_analysis system test]. This now uses a hypothetical new [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html Optimisation_settings object ] from the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis module] for holding all of the grid search, zooming grid search and minimisation settings. This will allow for far greater user control of the settings and hugely simplify the auto-analysis interface by decreasing the number of input arguments. It should also be less confusing.* Implementation of the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html Optimisation_settings object ] in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This object holds all of the grid search, zooming grid search, and minimisation settings. It provides the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#add_grid add_grid() ] and [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#add_min add_min() ] methods to allow the user to add successive iterations of optimisation and settings to the object. The [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#loop_grid loop_grid() ] and [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#loop_min loop_min() ] methods are used to loop over each iteration of each method. And the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#get_grid_inc get_grid_inc()], [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#get_grid_sobol_info get_grid_num_int_pts()], [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#get_grid_zoom_level get_grid_zoom_level()], [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#get_min_algor get_min_algor()], [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#get_min_func_tol get_min_func_tol() ] and [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#get_min_sobol_info get_min_num_int_pts() ] methods are used to access the user defined settings. The auto-analysis has been redesigned around this new concept. All of the optimisation arguments have been replaced. Instead there are the opt_rigid, opt_subset, opt_full, and opt_mc arguments which are expected to be instances of the Optimisation_settings object. The optimisation in the auto-analysis is now more advanced in that more user optimisation settings are now available and active.
* Added linear constraints for the pivot and average domain translation frame order parameters. The pivot coordinates are constrained between -999 and 999 Angstrom and the translation between -500 and 500 Angstrom. This allows the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] to operate in the case of failed models - often the free rotors fitting to torsionally restricted data - by preventing the PDB coordinates from being out of the PDB format range. It should also speed up optimisation by stopping the optimisation of failed models earlier.
* The [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html Optimisation_settings object ] now handles the maximum iterations. The new max_iter argument has been added to the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#add_min add_min() method], and the new [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#get_min_max_iter get_min_max_iter() method ] added to fetch the value. This is used in the auto-analysis to set the maximum number of optimisation iterations in the [http://www.nmr-relax.com/manual/minimise_execute.html minimise.execute user function] calls. Limiting this will be of greatest benefit for the test suite.
* Speedup of the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_auto_analysis Frame_order.test_auto_analysis system test]. This involves limiting the maximum number of optimisation steps to 20 for most parts (the rigid model excluded so the average domain position is correctly found), and using the PCS subset data for the full data set.
* Updated the full_analysis.py script for the CaM frame order test data. This is for the recent changes to the auto-analysis with the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html Optimisation_settings object ] and for the changes of this branch.* Removed the RDC data checks from the frame order optimisation. This is in the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#minimise_setup_rdcs minimise_setup_rdcs() ] and [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#store_bc_data store_bc_data() ] functions of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation -module.html specific_analyses.frame_order.optimisation module], called before and after all optimisation. The reason was identified by profiling - this check was adding significant amounts of time to the setup and results unpacking parts of the optimisation. Specifically the [http://www.nmr-relax.com/api/4.0/pipe_control.interatomic-module.html#interatomic_loop interatomic_loop() function ] was identified via profiling as the function requiring the most amount of cumulative time in the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_auto_analysis Frame_order.test_auto_analysis system test] (17 seconds out of a total of ~60 seconds).* Fixes for the removal of the RDC data checks from the frame order optimisation functions. The [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.api.Frame_order-class.html#overfit_deselect specific analysis API method overfit_deselect() ] has now been created to deselect spins which do not have PCS data or interatomic data containers missing RDC data. The handling of deselected spins and interatomic data containers is now also correctly handled throughout the frame order specific code.
* Enabled pivot optimisation in the full_analysis.py script for the CaM frame order test data.
* The [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] now calls the [http://www.nmr-relax.com/manual/time.html time user function]. This is used at the start of each model section, as well as at the very start and very end of the analysis. This feedback is needed for the user to be able to optimise the optimisation settings.
* Major bugfix for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The algorithm of using a PCS data subset of a few selected residues to find an initial parameter estimate followed by using all PCS data was badly implemented. The use of the PCS subset caused most spin systems to be deselected, however they remained deselected once all data was being used. So the result was that only the spin subset was ever being used in the analysis.
* Fix for the recent [http://www.nmr-relax.com/api/4.0/lib.periodic_table-module.html lib.period_table ] and [http://www.nmr-relax.com/api/4.0/lib.physical_constant physical_constants-module.html lib.physical_constants] module changes.* Created the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html#model_directory model_directory() method ] for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This is used to create the full path for saving model specific files. It replaces spaces with underscores in the path and removes all commas. The commas in the path appear to be fatal for certain PyMOL versions when viewing the frame order representation.
* The [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] results printout has been extended to include the pivot point.
* Change to the parameter nesting in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The pivot is now taken from the rotor model for all other models. Taking the pivot point from the isotropic cone model is not a good idea as there are situations where the pivot point optimisation catastrophically fails, sending the point many tens or hundreds of Angstrom away from the molecule.
* The [http://www.nmr-relax.com/manual/frame_order_permute_axes.html frame_order.permute_axes user function] can now handle the torsionless pseudo-ellipse. This model does not have the variable cdp.cone_sigma_max set.
* Added support for axis permutations in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This is done by copying the data pipe of the already optimised pseudo-elliptic models, permuting the axes, and performing another optimisation using all RDC and PCS data. This allows the second solution for these pseudo-elliptic models to be found. The 2<sup>nd</sup> pipe is included in the model selection step to allow the best solution for the model to be found.
* Fix for the reading of old results files in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The directory name is now processed by the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html#model_directory model_directory() method]. This will convert the spaces to '_' and remove commas. Without this the already created files could not be found, if the model name contains a space or comma.
* Made the pivot point in the frame order PDB representation fail-proof. If the pivot position was outside of the bounds [-1000, 1000], the PDB file creation would fail as the record would be too long. So now the pivot is shifted to be in these bounds.
* The axis permutation step in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] is now always performed. If an old results file was found, this step was accidentally skipped.
* Added extensive printouts to the [http://www.nmr-relax.com/manual/frame_order_permute_axes.html frame_order.permute_axes user function].
* Redesigned the [http://www.nmr-relax.com/manual/frame_order_permute_axes.html frame_order.permute_axes user function] frontend. Previously only cyclic permutations were considered, however non-cyclic permutations are also allowed when accompanied by an axis inversion. Therefore 3 combinations exist with cone_theta_x &le; cone_theta_y, or 2 when the current combination is excluded.
* Created 6 system tests for the [http://www.nmr-relax.com/manual/frame_order_permute_axes.html frame_order.permute_axes user function]. This covers the 3 starting conditions (x&lt;y&lt;z, x&lt;z&lt;y, z&lt;x&lt;y) and the two permutations ('A' and 'B') for each of these which do not include the starting permutation. They replace the original Frame_order.test_axis_permutation system test with the tests [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_axis_perm_x_le_y_le_z_permA Frame_order.test_axis_perm_x_le_y_le_z_permA], [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_axis_perm_x_le_y_le_z_permB Frame_order.test_axis_perm_x_le_y_le_z_permB], [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_axis_perm_x_le_z_le_y_permA Frame_order.test_axis_perm_x_le_z_le_y_permA], [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_axis_perm_x_le_z_le_y_permB Frame_order.test_axis_perm_x_le_z_le_y_permB], [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_axis_perm_z_le_x_le_y_permAFrame_order.test_axis_perm_z_le_x_le_y_permA], and [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_axis_perm_z_le_x_le_y_permB Frame_order.test_axis_perm_z_le_x_le_y_permB].* Implemented the new [http://www.nmr-relax.com/manual/frame_order_permute_axes.html frame_order.permute_axes ] backend. The 3 starting conditions x&lt;y&lt;z, x&lt;z&lt;y, and z&lt;x&lt;y and the two permutations 'A' and 'B' (for each of these which do not include the starting permutation) are now supported. For these 6 combinations, the axis and order parameter permutation and the z-axis inversion are selected and applied to the current system.
* Removed the second permutation from the 6 Frame_order.test_axis_perm_* system tests. A second identical permutation does not necessarily restore the original state.
* Fix for the [http://www.nmr-relax.com/manual/frame_order_permute_axes.html frame_order.permute_axes ] for the torsionless pseudo-ellipse model. The data structure cdp.cone_sigma_max does not exist in this model as cone_sigma_max == 0.0.
* Modified the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] axis permutation algorithm to handle both permutations. Instead of creating one additional data pipe for the permutations, two are now created for the permutations 'A' and 'B'. This allows all 3 solutions for the pseudo-elliptic models to be explored and included in the final model selection process.
* Fix for the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_axis_perm_x_le_z_le_y_permB Frame_order.test_axis_perm_x_le_z_le_y_permB system test]. The permuted z-axis needs to be inverted in the test.
* Many fixes for the [http://www.nmr-relax.com/manual/frame_order_permute_axes.html frame_order.permute_axes user function]. The z-axis inversion is now encoded into a 3D numpy array as the index of the new z-axis position needs to be stored. The cone_theta_x, cone_theta_y and cone_sigma_max parameters are now permuted in reverse 'perm' data structure by calling its index() method. And the cone_theta_x - cone_theta_y to y-axis - x-axis switch has been removed (this may need to be reintroduced later).
* Fix for the axis permutation protocol in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The [http://www.nmr-relax.com/manual/pipe_copy.html pipe.copy user function] does not switch pipes, therefore the [http://www.nmr-relax.com/manual/pipe_switch.html pipe.switch user function] is now being called so that the correct pipe is being permuted and optimised.
* Fix for the axis permutation protocol in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This would fail if a results file for the permuted model already exists as the [http://www.nmr-relax.com/manual/pipe_copy.html pipe.copy user function] call was being performed too early.
* Created set of files for the axis permutation of the torsionless isotopic cone frame order model.
* Created an initial [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_frame_order_pdb_model_ensemble Frame_order.test_frame_order_pdb_model_ensemble system test]. This is to check the operation of the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] when an ensemble of structures is encountered. However as this uses a very minimal number of user functions to set up the system, a number of other minor bugs will probably be uncovered.
* Added printouts to the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.parameters-module.html#update_model specific_analyses.frame_order.parameters.update_model() function]. This is to make it easier to understand why certain things fail due to the system not being fully set up.
* Simplified the operation of the [http://www.nmr-relax.com/manual/frame_order_select_model.html frame_order.select_model user function]. This is by removing the check of PCS data from the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.data-module.html#pivot_fixed specific_analyses.frame_order.data.pivot_fixed() function ] using the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.data-module.html#base_data_types base_data_types() function call]. This allows the model to be set up more easily.
* Modified the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks-module.html#check_pivot_func frame order check_pivot() function] to operate on any data pipe. The function now accepts the pipe_name argument so that checks can happen on any data pipe.
* Missing imports in the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks-module.html specific_analyses.frame_order.checks module]. This is from the recent pipe_name argument addition in the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks-module.html#check_pivot_func check_pivot() function].* The [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.data-module.html#generate_pivot frame order generate_pivot() function] can now handle no pivot being present. At the start of this [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.data -module .html specific_analyses.frame_order.data module] function, the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks-module.html#check_pivot_func check_pivot() function] is being called to make sure that a pivot is present.* Modified the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_frame_order_pdb_model_ensemble Frame_order.test_frame_order_pdb_model_ensemble system test ] so it is set up correctly. The pivot point and moving domain are now specified.* Added Monte Carlo simulations to the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_frame_order_pdb_model_ensemble Frame_order.test_frame_order_pdb_model_ensemble system test]. This is only setting up Monte Carlo simulation data structures via the [http://www.nmr-relax.com/manual/monte_carlo_setup.html monte_carlo.setup user function]. This demonstrates a failure of the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] when an ensemble of structures is present with Monte Carlo simulations.* Added support for the model argument for the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. This argument is used to specify which of the models in an ensemble will be used to represent the average domain position Monte Carlo simulations, as each simulation is encoded as a model, as well as for the distribution of structures simulating the motion of the system. The argument is therefore passed into the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#create_ave_pos create_ave_pos() ] and create_distribution() functions of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html specific_analyses.frame_order.geometric module]. To handle all models being used in the non Monte Carlo simulation PDB file and only one in this file, the internal structural object is copied twice. The second copy for the MC sims has all but the chosen model deleted out of it.* Fix for the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_frame_order_pdb_model_ensemble Frame_order.test_frame_order_pdb_model_ensemble system test]. More needed to be done to set up the Monte Carlo simulations - the [http://www.nmr-relax.com/manual/monte_carlo_initial_values.html monte_carlo.initial_values user function] call was required.* Modified the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.api.Frame_order-class.html#sim_init_values frame order sim_init_values() API method ] to handle missing optimisation data. The [http://www.nmr-relax.com/manual/monte_carlo_initial_values.html monte_carlo.initial_values user function] was failing if optimisation had not been performed. This is now caught and handled correctly.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_frame_order_pdb_model_failed_pivot Frame_order.test_frame_order_pdb_model_failed_pivot system test]. This simply shows how the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] currently fails if the optimised pivot point is outside of the PDB coordinate limits of "%8.3f".* The [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] can now properly handle a failed pivot optimisation. This is when the pivot point optimises to a coordinate outside of the PDB limits. Now all calls to [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.data-module.html#generate_pivot specific_analyses.frame_order.data.generate_pivot()] from the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html module specific_analyses.frame_order.geometric ] set the pdb_limit flag to True. This allows all representation objects to be within the PDB limits. The algorithm in generate_pivot() has been extended to allow higher positive values, as the real PDB limits are [-999.999, 9999.999]. And a RelaxWarning is called when the pivot is outside to tell the user about it.
* Modified the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] to be more fail-safe. Almost all of the protocol is now within a try-finally block so that the execution lock will always be released.
* Fix for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.data-module.html#pivot_fixed specific_analyses.frame_order.data.pivot_fixed() function]. This was recently introduced when the check for PCS data was removed from this function. To fix the problem, instead of calling [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.data-module.html#base_data_types base_data_types() ] to see if PCS data is present, the cdp.pcs_ids data structure is checked instead.
* Fix for the model argument for the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. The deletion of structural models for the Monte Carlo simulations in the average domain position representation now only happen if more than one model exists.
* Modified the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_frame_order_pdb_model_failed_pivot Frame_order.test_frame_order_pdb_model_failed_pivot system test]. This is to show that the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] fails if the pivot is close to but still within the PDB coordinate limits.
* Modified the pivot position checking in [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.data-module.html#generate_pivot specific_analyses.frame_order.data.generate_pivot()]. Now the pivot is shifted to be within the limits shrunk by 100 Angstrom. This allows any PDB representation created by the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] to be within the PDB limits.
* Fix for the axis permutation protocol in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. If a results file was found for one of the permutations, a return from the function would occur. The result is that the other permutations would not be loaded or optimised.
* Fix for the RelaxError raised by the [http://www.nmr-relax.com/manual/frame_order_select_model.html frame_order.select_model user function]. This is the error if the model name is incorrect.
* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pseudo_ellipse_zero_cone_angle Frame_order.test_pseudo_ellipse_zero_cone_angle system test]. This is to catch a bug in optimisation when the cone_theta_x is set to zero in the pseudo-ellipse models.
* Bug fix for the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse-module.html#tmax_pseudo_ellipse_array lib.frame_order.pseudo_ellipse.tmax_pseudo_ellipse_array() function]. The problem was that when &theta;<sub>x</sub> or &theta;<sub>y</sub> were zero, the floating point value of 0.0 would be returned. This is the incorrect behaviour as the returned value must be an array matching the dimensions of the &phi; angle array argument.
* Fix for the [http://www.nmr-relax.com/api/4.0/lib.structure.cones.Pseudo_elliptic-class.html Pseudo_elliptic cone object ] for when the cone angles are zero. The [http://www.nmr-relax.com/api/4.0/lib.structure.cones.Pseudo_elliptic-class.html#phi_max Pseudo_elliptic.phi_max() method ] now avoids a divide by zero error.
* Updates for all of the Frame_order.test_axis_perm_* system tests. The axis permutations and angle permutations are now performed correctly within the tests themselves. This allows the tests to pass.
* Modified the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pseudo_ellipse_zero_cone_angle Frame_order.test_pseudo_ellipse_zero_cone_angle system test ] to be quick. Now that the test passes, the optimisation needs to be short. So a maximum of two iterations are now set. Otherwise the test would take hours to complete.
* Small speedup of the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_auto_analysis Frame_order.test_auto_analysis system test].
* Alphabetical ordering of most of the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html Frame_order system tests].* Created the very simple [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_sobol_setup Frame_order.test_num_int_points system test]. This simply creates a data pipe and calls the [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.num_int_pts user function] to test its operation. This is to increase the test suite coverage of this user function.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_sobol_setup2 Frame_order.test_num_int_pts2 system test]. This checks the operation of the [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.num_int_pts user function] when only the model has been chosen.* Renamed the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_sobol_setup Frame_order.test_num_int_points system test to Frame_order.test_num_int_pts].* Created the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks-module.html#check_domain_func check_domain() function ] for the frame order analysis. This is in the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks -module.html specific_analyses.frame_order.checks module]. The function checks that the reference domain has been specified.* Created the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks-module.html#check_model_func check_model() function ] for the frame order analysis. This is in the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks -module.html specific_analyses.frame_order.checks module]. The function checks that the frame order model has been selected via the [http://www.nmr-relax.com/manual/frame_order_select_model.html frame_order.select_model user function].* The [http://www.nmr-relax.com/manual/frame_order_ref_domain.html frame_order.ref_domain user function] backend now uses the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks-module.html#check_domain_func check_domain() function].* Created the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks-module.html#check_parameters_func check_parameters() function ] for the frame order analysis. This is in the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks-module.html specific_analyses.frame_order.checks module]. The function checks that the frame order parameters have been set up and have values.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_sobol_setup3 Frame_order.test_num_int_pts3 system test]. This checks the operation of the [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.num_int_pts user function] when the model has been and the frame order parameters have been set up.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_count_sobol_points Frame_order.test_count_sobol_points system test]. This will test that the [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.num_int_pts user function] can correctly count the number of Sobol' integration points used for the current set of parameter values. This [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.num_int_pts] functionality does not exist yet.* Implementation of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points specific_analyses.frame_order.optimisation.count_sobol_points() function]. This is used by the [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.num_int_pts user function] to provide a printout of the number of Sobol' integration points used for the current parameter values. This is to provide user feedback so that it is know if enough Sobol' points have been used.* Modified the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_count_sobol_points Frame_order.test_count_sobol_points system test]. The number of points has been massively decreased as generating Sobol' points takes a long time, and the check for the number of used Sobol' points has been set to the real value.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_count_sobol_points2 Frame_order.test_count_sobol_points2 system test]. This checks the operation of the [http://www.nmr-relax.com/manual/frame_order_count_sobol_points.html frame_order.count_sobol_points user function]. As this user function has not been implemented yet, the test currently fails.* Created the [http://www.nmr-relax.com/manual/frame_order_count_sobol_points.html frame_order.count_sobol_points user function]. This is simply a frontend to the new [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points specific_analyses.frame_order.optimisation.count_sobol_points() function].* Updated the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_count_sobol_points2 Frame_order.test_count_sobol_points2 system test ] for the correct number of Sobol' points.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_count_sobol_points_rigid Frame_order.test_count_sobol_points_rigid system test]. This is to demonstrate a failure of the [http://www.nmr-relax.com/manual/frame_order_count_sobol_points.html frame_order.test_count_sobol_points user function] when applied to the rigid frame order model.
* Fix for the [http://www.nmr-relax.com/manual/frame_order_count_sobol_points.html frame_order.count_sobol_points user function] for the rigid model. This model is now caught at the start, a message printed out, and the function exited.
* Fix for the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_count_sobol_points_rigid Frame_order.test_count_sobol_points_rigid system test]. This now checks that cdp.used_sobol_points does not exist for the rigid frame order model after a call to the [http://www.nmr-relax.com/manual/frame_order_count_sobol_points.html frame_order.count_sobol_points user function].* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_count_sobol_points_rotor Frame_order.test_count_sobol_points_rotor system test]. This is to test the [http://www.nmr-relax.com/manual/frame_order_count_sobol_points.html frame_order.count_sobol_points user function] for the rotor model.
* Fix for the [http://www.nmr-relax.com/manual/frame_order_count_sobol_points.html frame_order.count_sobol_points user function] for the rotor model. The &sigma; angles unpacking required a dimensionality collapse in the Sobol' angle data structure.
* Updated the number of points to allow the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_count_sobol_points_rotor Frame_order.test_count_sobol_points_rotor system test ] to pass.* The [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points frame order count_sobol_points() function ] is now being called by all of minimise user functions. This occurs at the end of the [http://www.nmr-relax.com/manual/minimise_calculate.html minimise.calculate], [http://www.nmr-relax.com/manual/minimise_grid_search.html minimise.grid_search], and [http://www.nmr-relax.com/manual/minimise_execute.html minimise.execute] user function backends to provide more feedback to the user as to the quality of the optimisation. To avoid initialising the target function twice, the count_sobol_points() function now accepts the initialised target function as an optional argument.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_count_sobol_points_free_rotor Frame_order.test_count_sobol_points_free_rotor system test]. This is to demonstrate that the [http://www.nmr-relax.com/manual/frame_order_count_sobol_points.html frame_order.count_sobol_points user function] currently fails for the free-rotor model.
* Fix for the [http://www.nmr-relax.com/manual/frame_order_count_sobol_points.html frame_order.count_sobol_points user function] for the free-rotor models. The torsion angle is now correctly handled as the 3 free-rotor models do not have cdp.cone_sigma_max set.
* Updated the number of points in the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_count_sobol_points_free_rotor Frame_order.test_count_sobol_points_free_rotor system test]. This is to allow the test to pass.* Fix for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points frame order count_sobol_points() function]. The checks for the model, parameter and domain set up must come first, before cdp.model is accessed. Otherwise the [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.num_int_pts user function] will often fail.* Fix for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points frame order count_sobol_points() function]. The free-rotor isotropic cone model was incorrectly handled, as the cone parameter is 'cone_s1' and not 'cone_theta'. The order parameter is now converted to an angle before checking if the Sobol' point is outside of the cone or not.* More fixes for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points frame order count_sobol_points() function]. The torsion angle for the torsionless models is no longer accessed, and the cone_theta parameter is only accessed for models with this parameter.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_count_sobol_points_iso_cone_free_rotor Frame_order.test_count_sobol_points_iso_cone_free_rotor system test]. This is to test the [http://www.nmr-relax.com/manual/frame_order_count_sobol_points.html frame_order.count_sobol_points user function] for the free-rotor isotropic cone model.* Fix for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points frame order count_sobol_points() function]. The torsion angle ranges from -&pi; to &pi;, so the absolute value needs to be checked, just as in the [http://www.nmr-relax.com/api/4.0/lib.frame_order-module.html lib.frame_order modules].
* Updates for the number of Sobol' points in the Frame_order.test_count_sobol_points_* system tests. This is simply to allow all Frame_order system tests to pass.
* Redesigned the [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.num_int_pts user function] frontend for the oversampling idea. The use of the quasi-random Sobol' sequence for numerical PCS integration will be modified to use the concept of oversampling. Instead of specifying the exact number of points in the Sobol' sequence and then removing points outside of the current parameter values, the algorithm will oversample as N * Ov * 10<sup>M</sup>, where N is the maximum number of Sobol' points to be used for the integration, Ov is the oversampling factor, and M is the number of dimensions or torsion-tilt angles used in the system. The aim is to try to use the maximum number of points N for all frame order models and all ranges of dynamics.
* Renamed the frame_order.num_int_pts user function to [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.sobol_setup]. The user function no longer specifies the number of integration points. Instead it now specifies the maximum number of points N and oversampling factor Ov used to generate the oversampled Sobol' sequence.
* Implemented the Sobol' sequence oversampling in the frame order target function class.
* Converted all of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order-module.html specific_analyses.frame_order package ] to the Sobol' point oversampling design. The correct values are now sent into the target function and all references to cdp.num_int_pts has been replaced with the cdp.sobol_max_points and cdp.sobol_oversample pair of variables. The [http://www.nmr-relax.com/manual/frame_order_count_sobol_points.html frame_order.count_sobol_points user function] backend has also been updated to show the total number of oversampling points and the number of points used.
* The [http://www.nmr-relax.com/manual/frame_order_count_sobol_points.html frame_order.count_sobol_points user function] now shows more information. The maximum number and oversampling factors are now also printed out for maximum user feedback.
* Improved the printout formatting for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points count_sobol_points() frame order function].
* The frame order target function now passes the maximum number of Sobol' points to the relax library. The value is being passed into the lib.frame_order.*.pcs_numeric_int_*() functions, though it is not used set.
* Fix for the percentage calculation for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points frame order count_sobol_points() function].
* Changed the creation of the Sobol' points in the frame order target function. For increased accuracy of the numerical PCS integration, the first 1000 points of the Sobol' sequence are now skipped to avoid any bias. For speed, the axis order of the Sobol' torsion-tilt angles has been swapped so that the numpy.swapaxes() function call is no longer required in the lib.frame_order.*.pcs_numeric_int_*() functions.
* Updated the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points frame order count_sobol_points() function ] to handle the swapped axis order.* Huge speedup for the generation of the Sobol' sequence data in the frame order target function. The new [http://www.nmr-relax.com/api/4.0/target_functions.frame_order.Sobol_data-class.html Sobol_data class ] has been created and is instantiated in the module namespace as target_function.frame_order.sobol_data. This is used to store all of the Sobol' sequence associated data, including the torsion-tilt angles and all corresponding rotation matrices. When initialising the target function, if the Sobol_data container holds the data for the same model and same total number of Sobol' points, then the pre-existing data will be used rather than regenerating all the data. This can save a huge amount of time.* Updated the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points frame order count_sobol_points() function ] to use the new [http://www.nmr-relax.com/api/4.0/target_functions.frame_order.Sobol_data-class.html Sobol_data container]. The Sobol' sequence data generated by the target function is now located at target_functions.frame_order.sobol_data.
* Updated all the lib.frame_order.*.pcs_numeric_int_*() functions for the new Sobol' point algorithm. The functions now all accept the max_points argument and terminate the loop over the Sobol' points once the maximum number of points has been reached. The calls to numpy.swapaxes() have also been removed as this is now pre-performed by the target function initialisation.
* Changed the default oversampling factor from 100 to 1 in the [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.sobol_setup user function].
* Converted the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] to use the new [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.sobol_setup user function] design. The [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html auto-analysis Optimisation_settings object ] has also been modified so that all num_int_pts arguments and internal structures have been split into the two new sobol_max_points and sobol_oversample names and objects.
* Fix for the rigid frame order model for the recent [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.sobol_setup user function] changes. For this model, the number of Sobol' points normally is does not exist. This is now correctly handled.
* Created the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Frame_order_analysis-class.html#sobol_setup sobol_setup() method ] for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This is used to correctly handle the new design of the [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.sobol_setup user function] consistently throughout the protocol.* Updated the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_auto_analysis Frame_order.test_auto_analysis system test] script. This now uses the new [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html auto-analysis Optimisation_settings object ] design.* Updated the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_count_sobol_points Frame_order.test_count_sobol_points system test]. The call to the frame_order.num_int_pts user function was changed to [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.sobol_setup].* Fixes for the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_count_sobol_points2 Frame_order.test_count_sobol_points2 system test]. The test_suite/shared_data/frame_order/axis_permutations/cam_pseudo_ellipse.bz2 relax state file has been manual edited to change the num_int_pts data pipe structure to sobol_max_points and to add the new sobol_oversample variable.
* Added a backwards compatibility hook for state and results files for the Sobol' sequence changes. The data pipe num_int_pts variable is now renamed to sobol_max_points when present, and the sobol_oversample variable is created and set to 1.
* Updates to all of the Frame_order.test_count_sobol_points_* system tests. The [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.sobol_setup user function] is used to set a small maximum number of points (20) to allow the tests to be fast. The value of 20 is also checked for to allow the tests to pass.
* Renamed the cdp.used_sobol_points variable to sobol_points_used. This is created by the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points count_sobol_points() frame order function]. The name change is to match the sobol_max_points and sobol_oversample variable names.
* Renamed all the Frame_order.test_num_int_pts* system tests to Frame_order.test_sobol_setup*. These system tests where for checking the operation of the old frame_order.num_int_pts user function. But this is now the [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.sobol_setup user function].
* Fix for all of the Frame_order.test_rigid_data_to_*_model system tests. The frame_order.num_int_pts user function call was changed to [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.sobol_setup].
* Updated the &chi;<sup>2</sup> check in the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_rigid_data_to_free_rotor_model Frame_order.test_rigid_data_to_free_rotor_model system test]. This value has changed due to the first 1000 points of the Sobol' sequence being skipped.
* Fixes for all of the lib.frame_order.*.pcs_numeric_int_*_qrint() functions. The loop over the Sobol' points was broken. As numpy.swapaxes() has been applied to the points argument already, the loop needs to be over the second dimension of the points data structure.
* Updates for all of the Frame_order.test_cam_* system tests. The NUM_INT_PTS variable in the system tests scripts is now passed into the [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.sobol_setup user function] as the max_num argument. This number has also been changed so that the tests take a reasonable amount of time. All &chi;<sup>2</sup> value checks were updated. These were validated by increasing the number of integration points and watching the &chi;<sup>2</sup> value of the Frame_order.test_cam_*_pcs version of the system tests head to zero.
* Another update for the &chi;<sup>2</sup> check in the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_rigid_data_to_free_rotor_model Frame_order.test_rigid_data_to_free_rotor_model system test]. The previous commit used an incorrect value for the &chi;<sup>2</sup>. This new value is now much closer to the original.* Turned down the verbosity of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.parameters-module.html#update_model update_model() frame order function]. The verbosity flag is now accepted and set to zero by the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.api.Frame_order-class.html#get_param_values get_param_names() API method ] and [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.parameters-module.html#param_num specific_analyses.frame_order.parameters.param_num() function]. This removes a lot of useless printouts from many different user functions.* Introduced the verbosity argument to the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points count_sobol_points() frame order function]. This is used to turn the printouts on or off. The optimisation code now calls this function with the verbosity argument sent into the [http://www.nmr-relax.com/manual/minimise_grid_search.html minimise.grid_search] and [http://www.nmr-relax.com/manual/minimise_execute.html minimise.execute] user functions. Hence the printouts are suppressed for Monte Carlo simulations.* Removed the axis system printout from the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. This is for the geometric representation of the frame order dynamics. The axis system is printed out as the rotation matrix used for the [http://www.nmr-relax.com/api/4.0/lib.structure.geometric-module.html#generate_vector_residues lib.structure.geometric.generate_vector_residues() function ] later on anyway. The change is to simplify the printouts.
* Editing of the docstring of the [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.sobol_setup user function].
* Fix for the frame order system test optimisation printouts. The cdp.num_int_pts variable is now called cdp.sobol_max_points.
* The starting time of the axis permutation model optimisations is now output. This is in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This call to the [http://www.nmr-relax.com/manual/time.html time user function] occurred for the normal models, so extending it to the permuted axes models makes the output more consistent.
* Simplified the atomic position averaging warning in the frame order analysis. Instead of throwing a warning for each spin, one warning for all spins is now given. This should make the output a lot less verbose.
* The frame order [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#minimise_setup_atomic_pos minimise_setup_atomic_pos() function ] now accepts the verbosity argument. This is used to silence the warnings in user functions such as [http://www.nmr-relax.com/manual/frame_order_sobol_setup.html frame_order.sobol_setup]. * Improvements for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.api.Frame_order-class.html#overfit_deselect frame order overfit_deselect() API method]. Three changes have been made: The print statements have been converted to RelaxWarnings; The spin IDs or spin ID pairs are now stored in a list and one RelaxWarning for the missing PCS data and one for the missing RDC data is now given; And the verbose flag is now used to determine if a RelaxWarning will be given.* Change to the position averaging warning in the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#minimise_setup_atomic_pos minimise_setup_atomic_pos() frame order function].
* Improvements for the printout from the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.parameters-module.html#update_model update_model() frame order function]. A list of updated parameters is now created and everything is printed on a single line at the end. The printout is therefore much more compact.
* Spun out part of the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] into the new [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function]. The new user function arguments required for properly creating the pseudo-Brownian dynamics simulation would have made the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] too complicated. Therefore this part has been spun out into the new [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function]. The frame_order.simulate frontend fully describes the algorithm that will be used to simulate the dynamic content of the PCS and RDC data, and warns that not all modes of motion are visible and present.
* Small fix for the new [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] backend.
* Updated the base script for the Frame_order.test_cam_* system tests. The [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] is now called directly after the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function].
* Created the backend framework for the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function]. The backend [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.uf-module.html#simulate specific_analyses.frame_order.uf.simulate() function ] performs all data checks required, prepares the output file object, assembles the frame order parameter values and pivot point, and creates a copy of the structural object object with the ensemble collapsed into a single model. All this data is then passed into the new [http://www.nmr-relax.com/api/4.0/lib.frame_order.simulation-module.html#brownian lib.frame_order.simulation.brownian() function]. This initialises all required data structures and the structural object. The main loop of the simulation is also implemented, taking snapshots at every fixed number of steps and terminating the loop once the total number of snapshots are reached. The snapshot consists of copying the original unrotated structural model and rotating it into the new position. The rotation is currently the identity matrix. The old specific_analyses.frame_order.geometric.create_distribution() stub function has been deleted.
* Decreased the time required for the Frame_order.test_cam_* system tests. The [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] now only creates a total of 20 snapshots rather than 1000.
* Added new arguments to the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] for the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function]. These are the brownian_step_size, brownian_snapshot and brownian_total arguments which are passed directly into the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function]. This gives the user more control, as well as allowing the test suite to speed up this part of the analysis.
* Huge speedup for the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_auto_analysis Frame_order.test_auto_analysis system test]. The pseudo-Brownian dynamics simulation via the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] has been massively sped up to allow the test to be almost as fast as before.
* Spun out the code for shifting to the average frame order position into a new function. The old code of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#create_ave_pos create_ave_pos() ] of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric -module .html specific_analyses.frame_order.geometric module] has been shifted into the new [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#average_position average_position() function]. This will allow the code to be reused by other parts of relax to obtain the average frame order structures.* Implemented the shifting to the average position for the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] backend. This simply sends the structural object into the new [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#average_position average_position() function ] of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html specific_analyses.frame_order.geometric module].
* Improvements for the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function]. The rigid model is now skipped, the PDB file closed, and some printouts for better user feedback have been added.
* Changed the default PDB file name for the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] to 'simulate.pdb'. The '*.bz2' extension has been dropped so that the file is quicker to create and does not need to be decompressed for loading into molecular viewers.
* Created the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#generate_axis_system specific_analyses.frame_order.geometric.generate_axis_system() function]. This is now used by most parts of the frame order analysis to generate the full 3D eigenframe of the motions. Previously this was implemented each time the frame or major axis was required. This replicated and highly inconsistent code has been eliminated.* Fix for the new [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#generate_axis_system specific_analyses.frame_order.geometric.generate_axis_system() function]. The rotor and free rotor models were not correctly handled and the returned eigenframe was the zero matrix.
* Implemented the pseudo-Brownian frame order dynamics simulation for the single motion models. This uses the same logic as in the test_suite/shared_data/frame_order/cam/*/generate_distribution.py scripts which were used to generate all of the test suite data. However rather than using a random rotation matrix, a random 3D vector is used to rotate a fixed angle. And the rotation is used to rotate the current state to state i+1. The rotation for the state is decomposed into torsion-tilt angles once shifted into the motional eigenframe, the violations checked for as the state shifted to the boundary, then the new state reconstructed from the corrected torsion-tilt angles, and then it is shifted from the motional eigenframe to the PDB frame.
* Shifted the [http://www.nmr-relax.com/api/4.0/lib.frame_order.variables-module.html specific_analyses.frame_order.variables module into the lib.frame_order package]. This is both to minimise circular dependencies, as previously the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order-module.html specific_analyses.frame_order modules ] import from [http://www.nmr-relax.com/api/4.0/target_functions.frame_order-module.html target_functions.frame_order ] and vice-versa, and to allow the relax library functions to have access to these variables.
* Implemented the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] backend for the double rotor frame order model. This involved extending the algorithm to loop over N states, where N=2 for the double rotor and N=1 for all other models. To handle the rotations being about the x and y-axes, an axis permutation algorithm is used to shift these axes to z prior to decomposing to the torsion-tilt angles. The reverse permutation is used to shift the axes back after correcting for being outside of the allowed angles.
* Fixes for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#average_position specific_analyses.frame_order.geometric.average_position() function]. The recent trunk changes with the structural object Internal_selection class required a change in this function.* Updated the [http://www.nmr-relax.com/api/4.0/lib.frame_order.simulation-module.html#brownian lib.frame_order.simulation.brownian() function]. This now uses the internal structural object selection object logic - the [http://www.nmr-relax.com/api/4.0/lib.structure.internal.object.Internal-class.html#selection selection() method ] is called to obtain the [http://www.nmr-relax.com/api/4.0/lib.structure.internal.object.Internal-class.html Internal_selection object], and this is then passed into the rotation() method.
* The quad_int argument for the frame order target function class now defaults to False. This is so that quasi-random Sobol' numerical integration will be used by default.
* The cdp.quad_int flag is now passed into the target function for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.api.Frame_order-class.html#calculate frame order calculate() method]. This is for the [http://www.nmr-relax.com/manual/minimise_calculate.html minimise.calculate user function] backend.
* Fixes for the missing cdp.quad_int flag. If the cdp.quad_int flag is missing, this is now set to False before setting up the target function class. The previous behaviour was that the [http://www.nmr-relax.com/manual/frame_order_quad_int.html frame_order.quad_int user function] must be called prior to optimisation. Now it is optional for turning this flag on and off.
* The RDC only optimisation now defaults to the *_qrint() frame order target functions. This restores the earlier behaviour prior to the restoration of the SciPy quadratic integration.
* Clean up for the frame order target function aliasing. The Scipy quadratic integration and the quasi-random Sobol' integration target functions are now aliased using the getattr() Python method to programmatically choose one or the other. The rigid model has been removed from the list as it is not a numeric model, and the [http://www.nmr-relax.com/api/4.0/target_functions.frame_order.Frame_order-class.html#func_double_rotor_qr_int func_double_rotor() target function has been renamed to func_double_rotor_qrint() ] to make it consistent with the naming of the other target functions.* Renaming of all the frame order target functions and PCS integration functions. For consistency, all quasi-random Sobol' integration functions now use the 'qr_int' tag whereas the SciPy quadratic integration functions use the 'quad_int' tag. This is not only in the target function names but also the PCS integration functions in [http://www.nmr-relax.com/api/4.0/lib.frame_order-module.html lib.frame_order].
* Duplicated all Frame_order.test_cam_* system tests for testing the SciPy quadratic integration. The Frame_order.test_cam_* system tests have all been renamed to Frame_order.test_cam_qr_int_*. These have been duplicated and renamed to Frame_order.test_cam_quad_int_*. The flag() system test method has been extended to include the quad_int flag which is then stored in the status object and used in the base CaM frame order system test script to activate the [http://www.nmr-relax.com/manual/frame_order_quad_int.html frame_order.quad_int user function].
* Activated the quad_int flag for a number of the Frame_order.test_cam_quad_int_* system tests. The quad_int argument for the flags() test suite method had been missed for a few of these tests.
* Updated the &chi;<sup>2</sup> check in the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_cam_qr_int_pseudo_ellipse_free_rotor_rdc Frame_order.test_cam_qr_int_pseudo_ellipse_free_rotor_rdc system test]. This test is not normally run as it blacklisted and duplicates the coverage of other tests. However its chi-squared value check had not been updated for a while and hence the test fails when explicitly run.
* The Sobol' point counting is now turned off for the frame order optimisation functions if none exist. If the cdp.quad_int flag is set, then there will be no Sobol' points to count. This count_sobol_point() user feedback function will therefore not be called by the [http://www.nmr-relax.com/manual/minimise_calculate.html minimise.calculate], [http://www.nmr-relax.com/manual/minimise_grid_search.html minimise.grid_search] and [http://www.nmr-relax.com/manual/minimise_execute.html minimise.execute] user functions.
* Turned off optimisation for all of the Frame_order.test_cam_quad_int_* system tests. The SciPy quadratic integration is far too slow to be used in the test suite. The simple call to the [http://www.nmr-relax.com/manual/minimise_calculate.html minimise.calculate user function] is sufficient for checking these target functions.
* Updated all of the Scipy quadratic integration frame order target functions. A number of the data structures in the target function class have been redesigned since these target functions were deleted. All of the func_*_quad_int*() target functions have been updated for these changes.
* Updated all of the &chi;<sup>2</sup> value checks for the Frame_order.test_cam_quad_int_* system tests. This is only for those tests which use PCS data - the RDC only test &chi;<sup>2</sup> values are the same as in the Frame_order.test_cam_qr_int_* system tests. In all cases, the &chi;<sup>2</sup> value is lower for the more accurate SciPy quadratic integration as compared to the quasi-random Sobol' integration, as expected.
* Implemented the SciPy quadratic integration target function for the double rotor frame order model. This simply follows from what all the other quadratic integration target functions and [http://www.nmr-relax.com/api/4.0/lib.frame_order-module.html lib.frame_order module ] functions do.
* Changed the &chi;<sup>2</sup> value checks in the Frame_order.test_cam_quad_int_double_rotor* system tests. These were the values for the quasi-random Sobol' integration and needed updating for the SciPy quadratic integration.
* Removed the skip_tests argument for the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#__init__ Frame_order system tests __init__() method]. This argument, which was used to manually turn on or off the blacklisted tests, is no longer needed due to the new --no-skip relax command line flag which will enable all blacklisted tests.* The [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html Optimisation_settings object ] now supports the quad_int flag. This is for activating the SciPy quadratic integration. It is accepted as an argument for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#add_grid add_grid() ] and [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#add_min add_min() ] methods, and it returned by the new [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#get_grid_quad_int get_grid_quad_int() ] and [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#get_min_quad_int get_min_quad_int() ] methods.
* Added the ability to specify a pre-run directory in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This will be used for refinement purposes. If the new pre_run_dir argument, modelled on the relaxation dispersion auto-analysis, is supplied then results files will be loaded from this directory and the base data pipe copying and PCS subset optimisation steps will be skipped. The model nesting algorithm is also deactivated.
* Activated the SciPy quadratic integration in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. If the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html Optimisation_settings object ] has been set up with the quad_int flag, then the auto-analysis will skip the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Frame_order_analysis-class.html#sobol_setup sobol_setup() method ] and instead directly call the [http://www.nmr-relax.com/manual/frame_order_quad_int.html frame_order.quad_int user function]. Optimisation will then use the SciPy quadratic integration rather than the quasi-random Sobol' integration.* Improvements for the usage of the [http://www.nmr-relax.com/manual/frame_order_quad_int.html frame_order.quad_int user function] in the auto-analysis. The [http://www.nmr-relax.com/manual/frame_order_quad_int.html frame_order.quad_int user function] is now called even when the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html Optimisation_settings object ] quad_int flag is False. This allows for switching between the SciPy quadratic integration and the quasi-random Sobol' integration, as the SciPy quadratic integration can now be turned off.
* Additions to the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] documentation.
* Incorporated the contents of the summarise.py script into the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis module]. This has been converted into the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html#summarise summarise() function ] which will generate a results summary table as the analysis is still running.* Improved logic in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html#summarise auto_analyses.frame_order.summarise() function]. The model names, directories and titles are now being auto-generated from the [http://www.nmr-relax.com/api/4.0/lib.frame_order.variables-module.html#MODEL_LIST full list of frame order models in lib.frame_order.variables.MODEL_LIST]. To create a common mechanism for determining the model directory name, the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html#model_directory Frame_order_analysis.model_directory() method has been converted into a module function].* The [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] now calls the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html#summarise summarise() function ] at the end to create a summary table.
* Shifted the final state saving in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] to be within the safety of the try block.
* Turned off the final state saving in the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_auto_analysis Frame_order.test_auto_analysis system test]. This almost halves the time required for the test. A private class variable _final_state has been added to the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Frame_order_analysis-class.html auto_analyses.frame_order.Frame_order_analysis class ] which when False will cause the state saving step to be skipped.* The [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html#summarise summarise() function ] call is now after saving the final state in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This is needed because the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html#summarise summarise() function ] will create a new set of data pipes, loading the results which already exist under a different pipe name in the relax data store. Otherwise the final state file is twice as big as it should be.* Incorporated the contents of count_sobol_points.py into the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis module]. The analysis script has been converted into the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points count_sobol_points() function ] which will generate a summary table of the number of quasi-random Sobol' points used for the PCS numerical integration.* The [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] now calls the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points count_sobol_points() function ] at the end. This is to automatically create the Sobol' point summary table.* Fixes for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html#summarise auto_analyses.frame_order.summerisesummarise() function]. If the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points count_sobol_points() function ] is called followed by summerisesummarise(), a RelaxError will be raised as the data pipe already exists. The summerisesummarise() function has been modified to switch to the data pipe if it already exists.* Expanded the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] documentation. This adds a description for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html#summarise summarise() ] and [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points count_sobol_points() ] functions.
* Elimination of most of the Frame_order.fixme_test_* system tests and associated data. These tests are from a very early stage of the development of the frame order theory back when the base data was the full and reduced alignment tensors for the each domain calculated from the RDC data. They do not fit into the current analysis where the base data is the RDCs and PCSs for the moving domain. There is no point upgrading the tests as it will be far too much effort and it will only duplicate the coverage of the Frame_order.test_cam_* system tests.
* Renamed the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_opendx_map Frame_order.fixme_test_opendx_map system test to Frame_order.test_opendx_map ] to activate it.* Upgraded the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_opendx_map Frame_order.test_opendx_map system test]. To upgrade from the ancient design to the current design so that the test is functional and relevant, this now uses the same setup as the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_cam_qr_int_rigid Frame_order.test_cam_qr_int_rigid system test]. Instead of performing optimisation, the test calls the [http://www.nmr-relax.com/manual/dx_map.html dx.map user function].* Fix for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.api.Frame_order-class.html#calculate frame order specific API calculate() method]. This was caught by the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_opendx_map Frame_order.test_opendx_map system test]. The scaling matrix was not being specified by the [http://www.nmr-relax.com/manual/dx_map.html dx.map user function] backend and this was causing the method to fail. Instead of passing the non-existent scaling matrix into the target function, the argument is simply ignored. The scaling matrix has no effect on the [http://www.nmr-relax.com/manual/minimise_calculate.html minimise.calculate user function] so it is not necessary.* The verbosity flag is now being respected by the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.api.Frame_order-class.html#calculate frame order specific API calculate() method]. This silences the method when executing the [http://www.nmr-relax.com/manual/dx_map.html dx.map user function]. The &chi;<sup>2</sup> value printout is suppressed and the verbosity argument is being sent into the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points frame order count_sobol_points() function].
* Added a section printout to the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] when summary tables are created.
* The [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] now defaults to creating a gzipped PDB file. This is to save room, and because most molecular viewers will automatically read gzipped PDB files.
* Fix for the change of the [http://www.nmr-relax.com/api/4.0/pipe_control.pipes-module.html#check_pipe_func pipe_control.pipes.test() function to check_pipe()].
* Small change in the title of the summary table of the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. 'Order parameters' has been replaced by 'Cone half angles' to clarify what the values really are.
* Fix for the frame order optimisation target setup printouts. The 'Numerical integration: ' printout was fixed to 'Quasi-random Sobol' sequence'. This now changes to 'SciPy quadratic integration' if cdp.quad_int is set. The text 'PCS' has also been added for clarification.
* Removed the call to the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] for the rigid model in the auto-analysis. There is no motion to simulate in the rigid model, so the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] has no use.
* Improvements, fixes, and expansion of the results and data visualisation file creation. This is for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Frame_order_analysis-class.html#results_output visualisation() method has been renamed to results_output() ] and its scope expanded. The function previously only called the [http://www.nmr-relax.com/manual/frame_order.pdb_modelframe_order_pdb_model.html frame_order.pdb_model] and [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate] user functions for creating PDB representations of the frame order motions and performing a pseudo-Brownian frame order dynamics simulate. This has been extended to also call the [http://www.nmr-relax.com/manual/results_write.html results.write user function] for outputting results files and the [http://www.nmr-relax.com/manual/rdc_corr_plot.html rdc.corr_plot ] and [http://www.nmr-relax.com/manual/pcs_corr_plot .html pcs.corr_plot] for generating correlation plots of the measured vs. back-calculated data. All parts of the auto-analysis were output files are required now call this method. This ensures that all output files are always created, and are placed into the correct directories.* Improvements for the sectioning printouts for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The sections now use the [http://www.nmr-relax.com/api/4.0/lib.text.sectioning-module.html lib.text.formatting ] [http://www.nmr-relax.com/api/4.0/lib.text.sectioning-module.html#subtitle subtitle() ] and [http://www.nmr-relax.com/api/4.0/lib.text.sectioning-module.html#subsubtitle subsubtitle() ] functions to distinguish them from the output of all the user functions, which use the [http://www.nmr-relax.com/api/4.0/lib.text.sectioning-module.html#section section()], [http://www.nmr-relax.com/api/4.0/lib.text.sectioning-module.html#subsection subsection() ] and [http://www.nmr-relax.com/api/4.0/lib.text.sectioning-module.html#subsubsection subsubsection() ] functions. New sectioning printouts have been added for clarity.
* Possible fixes for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This is just in case a user decides to not perform the optimisation starting with a PCS subset. In this case, the analysis will now execute correctly.
* Improvements to the summary table for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The rotor and free rotor model motional eigenframe parameter axis_alpha is now being converted into spherical angles and reported in the table. This allows the motional eigenframe of all models to be easily compared in the table.
* Created a directory and base PDB system for testing out the PCS information content. The base PDB system consists of Ad Bax's CaM domain structures superimposed onto the open CaM structure, the N-domain CoM shifted to the origin, and the C-domain CoM shifted to the z-axis.
* Modified the PCS content testing base system. The paramagnetic centre is now shifted to the origin, as this is the real centre of the PCS physics.
* Intermediate optimisation results are now stored by the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The results from each [http://www.nmr-relax.com/manual/minimise_grid_search.html minimise.grid_search] and [http://www.nmr-relax.com/manual/minimise_execute.html minimise.execute] user function call are now stored in specially named directories located in the 'intermediate_results' directory, which itself is located in the auto-analysis results_dir directory. This allows intermediate results to be more easily analysed later on, which can be useful for optimising the optimisation steps. These directories can also be used for the pre_run_dir auto-analysis argument for subsequent refinements from earlier steps in the optimisation. The results stored include everything from the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Frame_order_analysis-class.html#results_output results_output() method ] and the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points count_sobol_points() ] and [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html#summarise summarise() ] functions. To allow this to work, the auto-analysis functions count_sobol_points() and summarise() required modification. Results files are now always loaded into a temporary data pipe, rather switching to the corresponding pipe, and the temporary data pipe is deleted after the data has been extracted. The original data pipe name is also stored and a switch back to that pipe occurs at the end of each function.* The simulation is now turned of for intermediate results in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The intermediate results are only for checking, so for these the full pseudo-Brownian dynamics simulations are not required. The simulation flag has been introduced into the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Frame_order_analysis-class.html#results_output results_output() method ] of the auto-analysis to control this.
* The splitting of the rigid model grid search into rotation and translation parts is now optional. In the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis], the rigid_grid_split argument has been introduced. The alternating algorithm of performing a grid search over the rotational space followed by translation is now optional and turned off by default. The reason is because the global minimum is sometimes missed with this shortcut algorithm.
* Speedup of the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_auto_analysis Frame_order.test_auto_analysis system test]. The splitting of the rigid model grid search into rotation and translation parts has been reactivated.
* Created the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#has_grid Optimisation.has_grid() method ] for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This is used to test if the optimisation settings object has a grid search defined.
* The grid search can now be skipped for the rigid model in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. If the input 3D structures are close to the real solution, the grid search over the translational and rotation parameters of the rigid model could be skipped. This speeds up the analysis and can help find the real solution in problematic cases.
* The intermediate results storing can now be turned off in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The new store_intermediate Boolean argument has been added to the analysis to allow the storage of these results to be turned on or off.
* The compression level for results files can now be set in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This is via the new argument results_compress_type, which is used to set the compress_type argument of the [http://www.nmr-relax.com/manual/results_write.html results.write user function]. The results reading parts of the auto-analysis have been updated to allow uncompressed, bzip2 compressed, and gzip compressed files to be handled.
* Added a printout of the frame order model in the target function setup function. This is printed out when the [http://www.nmr-relax.com/manual/minimise_calculate.html minimise.calculate], [http://www.nmr-relax.com/manual/minimise_grid_search.html minimise.grid_search], or [http://www.nmr-relax.com/manual/minimise_execute.html minimise.execute] user functions are called, and is for better feedback, especially in the auto-analysis where the repetitive optimisations can be confusing.
* Updated the frame order analysis for the [http://www.nmr-relax.com/manual/structure_load_spins.html structure.load_spins user function ] changes. The [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#minimise_setup_atomic_pos minimise_setup_atomic_pos() function ] of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html specific_analyses.frame_order.optimisation module ] now handles the mixed type spin.pos variable correctly.
* The data pipe containing a PCS subset is now optional in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This is for systems which have so little data that a subset makes no sense.
* Redesigned the optimisation steps for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The code has been significantly simplified as the optimisation for the PCS subset and full data set was the same. The code duplication has been eliminated by combining it into the new [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Frame_order_analysis-class.html#optimisation optimisation() method]. The check for the PCS subset has also been expanded so that it is skipped if the subset data pipe is not supplied, even if an optimisation object for the subset has been (this should prevent strange errors when the auto-analysis is incorrectly used). A side effect of this code merger is that the zooming grid search has now been activated for the full PCS data set. This is of great benefit when a PCS subset is not being used.
* The [http://www.nmr-relax.com/manual/minimise_execute.html minimise.execute user function] skip_preset flag is now False in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This is for the main model optimisation. Without this flag set, the grid search for the pivot point position for the rotor model was being skipped at the first zoom level.
* The pivot point can now be excluded from the grid search in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. If the initial pivot point is known to be reasonable, then it may be possible to skip it in the grid search for the rotor frame order model. This can lead to a speedup of the analysis and can help with stability. The pivot_search argument has been added to the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#add_grid auto-analysis Optimisation.add_grid() method ] to enable this. The [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Optimisation_settings-class.html#get_grid_pivot_search get_grid_pivot_search() method ] has also been added to allow the auto-analysis to query this and turn it off if desired.
* Updated the description of the [http://www.nmr-relax.com/manual/frame_order_permute_axes.html frame_order.permute_axes user function]. This now includes the isotopic cone.
* Replaced the table in the [http://www.nmr-relax.com/manual/frame_order_permute_axes.html frame_order.permute_axes user function]. The original table was an old and incorrect version. This has been replaced by the correct permutation table.
* Improvements for the Grace files produced by the frame_order_simulate.py script. The model name is now set as a variable and is used for the subheading.
* Updated the frame_order_solution.py script for directly calculating the frame order matrix elements. The MODEL variable has been added in preparation for supporting all model types, and this is now added to the file name. The Grace header is now also being automatically generated and this matches that for the frame_order_simulation.py script.
* Zero values can now be handled in the pseudo-ellipse 1<sup>st</sup> degree frame order matrix function. This is in [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse-module.html#compile_1st_matrix_pseudo_ellipse lib.frame_order.pseudo_ellipse.compile_1st_matrix_pseudo_ellipse()].* Removed some unused code in the pseudo-ellipse 2<sup>nd</sup> degree frame order matrix function. This is the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse-module.html#compile_2nd_matrix_pseudo_ellipse compile_2nd_matrix_pseudo_ellipse() function ] in the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse-module.html lib.frame_order.pseudo_ellipse module]. The change should make the RDC part of the frame order analysis for the pseudo-ellipse model slightly faster.* Modified the rotate_daeg() function as this is independent of the degree of the frame order matrix. This is the [http://www.nmr-relax.com/api/4.0/lib.frame_order.matrix_ops-module.html#rotate_daeg lib.frame_order.matrix_ops.rotate_daeg() function].* Fix for the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse-module.html#compile_1st_matrix_pseudo_ellipse compile_1st_matrix_pseudo_ellipse() function]. This function of the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse-module.html lib.frame_order.pseudo_ellipse module ] now can rotate the 1<sup>st</sup> degree frame order matrix out of its eigenframe and into the PDB frame.
* Created an executable Python script for mass converting the frame order matrix Grace graphs. The script converts the *.agr files to EPS and PNG files.
* Modified the frame order matrix Grace graph to EPS/PNG format conversion script. The binary being called is now 'grace' rather than 'xmgrace'. This allows different Grace versions to be used.
* Added all of the Grace graphs produced by the frame_order_solution.py script. These are the graphs of the 1<sup>st</sup> and 2<sup>nd</sup> degree frame order matrix elements, calculated using the functions in lib.frame_order.
* Updated frame_order_simulate.py to be much faster in simulating the frame order matrix elements. The script also matches the Grace file output of the frame_order_solution.py script. The inside() method has been renamed for the pseudo-ellipse and the infrastructure for adding support for the other frame order models has been added. By shifting calculations outside of the loops, the script is now many orders of magnitude faster.
* Implemented the [http://www.nmr-relax.com/api/4.0/lib.frame_order.rotor-module.html#compile_1st_matrix_rotor compile_1st_matrix_rotor() function]. This is for the [http://www.nmr-relax.com/api/4.0/lib.frame_order.rotor -module.html lib.frame_order.rotor module]. The function will calculate the 1<sup>st</sup> degree in-frame frame order matrix for the rotor model.* Created the Grace graphs for the rotor model 1<sup>st</sup> degree frame order matrix elements. These are the values calculated directly from the [http://www.nmr-relax.com/api/4.0/lib.frame_order-module.html lib.frame_order modules]. The graphs were previously all zeros.* Implemented the [http://www.nmr-relax.com/api/4.0/lib.frame_order.free_rotor-module.html#compile_1st_matrix_free_rotor compile_1st_matrix_free_rotor() function]. This is for the [http://www.nmr-relax.com/api/4.0/lib.frame_order.free_rotor-module.html lib.frame_order.free_rotor module]. The function will calculate the 1<sup>st</sup> degree in-frame frame order matrix for the free rotor model.* Created the Grace graphs for the free rotor model 1<sup>st</sup> degree frame order matrix elements. These are the values calculated directly from the [http://www.nmr-relax.com/api/4.0/lib.frame_order-module.html lib.frame_order modules]. The graphs were previously all zeros.* Implemented the [http://www.nmr-relax.com/api/4.0/lib.frame_order.iso_cone-module.html#compile_1st_matrix_iso_cone compile_1st_matrix_iso_cone() function]. This is for the [http://www.nmr-relax.com/api/4.0/lib.frame_order.iso_cone-module.html lib.frame_order.iso_cone module]. The function will calculate the 1<sup>st</sup> degree in-frame frame order matrix for the isotropic cone model.* Created the Grace graphs for the isotropic cone model 1<sup>st</sup> degree frame order matrix elements. These are the values calculated directly from the [http://www.nmr-relax.com/api/4.0/lib.frame_order-module.html lib.frame_order modules]. The graphs were previously all zeros.* Implemented the [http://www.nmr-relax.com/api/4.0/lib.frame_order.iso_cone_torsionless-module.html#compile_1st_matrix_iso_cone_torsionless compile_1st_matrix_iso_cone_torsionless() function]. This is for the [http://www.nmr-relax.com/api/4.0/lib.frame_order.iso_cone_torsionless-module.html lib.frame_order.iso_cone_torsionless module]. The function will calculate the 1<sup>st</sup> degree in-frame frame order matrix for the torsionless isotropic cone model.* Created the Grace graphs for the torsionless isotropic cone 1<sup>st</sup> degree frame order matrix elements. These are the values calculated directly from the [http://www.nmr-relax.com/api/4.0/lib.frame_order-module.html lib.frame_order modules]. The graphs were previously all zeros.* Implemented the [http://www.nmr-relax.com/api/4.0/lib.frame_order.iso_cone_free_rotor-module.html#compile_1st_matrix_iso_cone_free_rotor compile_1st_matrix_iso_cone_free_rotor() function]. This is for the [http://www.nmr-relax.com/api/4.0/lib.frame_order.iso_cone_free_rotor-module.html lib.frame_order.iso_cone_free_rotor module]. The function will calculate the 1<sup>st</sup> degree in-frame frame order matrix for the free rotor isotropic cone model.* Created the Grace graphs for the free rotor isotropic cone 1<sup>st</sup> degree frame order matrix elements. These are the values calculated directly from the [http://www.nmr-relax.com/api/4.0/lib.frame_order-module.html lib.frame_order modules]. The graphs were previously all zeros.* Docstring fixes for the new [http://www.nmr-relax.com/api/4.0/lib.frame_order.iso_cone-module.html#compile_1st_matrix_iso_cone compile_1st_matrix_iso_cone() function].
* A minor speedup for the frame_order_simulate.py script. The angles are now being calculated at the very start prior to the main loop, removing repetitive calculations.
* The frame_order_simulate.py script now uses [http://www.nmr-relax.com/api/4.0/lib.text.progress-module.html#progress_meter lib.text.progress.progress_meter()]. This script for simulating the frame order matrix elements now uses the standard progress meter in relax to simplify the script. This should also speed up the calculations as the progress printouts were slowing down the calculations.
* Simulation of the pseudo-ellipse frame order matrix elements. This is for a simulation of 1,000,000 states for each angle increment, and includes in-frame and out-of-frame and varying of &theta; X, Y, and Z. The resultant Grace graphs have been added to the repository.
* The frame order matrix element simulation script now uses the Kronecker outer product. This allows the frame order matrix to be in the same notation as that used internally in relax. It will cause the colours of the Sijkl_* curves to match between the simulation and solution scripts.
* Added the rotor model to the frame order matrix element simulation script. The generated in-frame and out-of-frame Grace graphs containing the matrix values for 1,000,000 simulation values have been added to the repository. The script was modified so that the rotation is generated by special rotation_*() methods which are aliased depending on the model.
* Added the free rotor model to the frame order matrix element simulation script. The generated in-frame and out-of-frame Grace graphs containing the matrix values for 1,000,000 simulation values have been added to the repository. The inside_free_rotor() method has been added to always return True for the rotation generated by rotation_z_axis().
* Simplifications and fixes for the 1<sup>st</sup> degree frame order matrix calculation for the pseudo-ellipse. The [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse-module.html#compile_1st_matrix_pseudo_ellipse compile_1st_matrix_pseudo_ellipse() function ] of the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse -module .html lib.frame_order.pseudo_ellipse module] has been significantly simplified by shifting a lot of maths outside of the quadratic integration.* Updated all the calculated 1<sup>st</sup> degree frame order matrix graphs for the pseudo-ellipse. The changes are due to the fixes in the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse-module.html lib.frame_order.pseudo_ellipse module].
* Simplifications for all of the torsionless pseudo-ellipse frame order matrix equations.
* Implemented the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse_torsionless-module.html#compile_1st_matrix_pseudo_ellipse_torsionless compile_1st_matrix_pseudo_ellipse_torsionless() function]. This is for the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse_torsionless -module.html lib.frame_order.pseudo_ellipse_torsionless module]. The function will calculate the 1<sup>st</sup> degree in-frame frame order matrix for the torsionless pseudo-ellipse model.* Created the Grace graphs for the torsionless pseudo-ellipse model 1<sup>st</sup> degree frame order matrix. These are the values calculated directly from the [http://www.nmr-relax.com/api/4.0/lib.frame_order-module.html lib.frame_order modules]. The graphs were previously all zeros.* Added the isotropic cone model to the frame order matrix element simulation script. The generated in-frame and out-of-frame Grace graphs for the torsion angle cone_sigma_max, containing the matrix values for 1,000,000 simulation values have been added to the repository. The inside_iso_cone() method has been created to check for the &theta;<sub>x</sub> and &theta;_z <sub>z</sub> angle violations from the rotation_hypersphere() method.
* Simplifications for the inside_*() methods of the frame order matrix element simulation script. The limit() method is now called only once outside of these methods and the maximum cone half-angles passed into the inside_*() methods. Although only slightly faster, this is mainly to simplify the code.
* Alphabetical ordering of methods in the frame order matrix element simulation script.
* Simplification of some of the pseudo-ellipse 2<sup>nd</sup> degree frame order matrix equations.
* More simplifications of the pseudo-ellipse 2<sup>nd</sup> degree frame order matrix equations.
* Integer to float conversions in [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse-module.html#part_int_daeg2_pseudo_ellipse_13 part_int_daeg2_pseudo_ellipse_13()]. This avoid integer to float conversion during execution, saving a little time for the pseudo-ellipse 2<sup>nd</sup> degree frame order matrix compilation.
* Removal of many repetitive calculations in the pseudo-ellipse 2<sup>nd</sup> degree frame order matrix equations.
* Simplifications of pseudo-ellipse 1<sup>st</sup> degree frame order matrix functions. The xx, yy, and zz have been renamed to 00, 11, and 22 for consistency. And all sigma_max arguments have been dropped as they are not used.
* Small numerical changes for the pseudo-ellipse 2<sup>nd</sup> degree frame order matrix graphs. These are only for the first point close to zero and the changes are minimal, caused by the recent simplifications of the code.
* Created the Grace graphs for the free rotor pseudo-ellipse model 1<sup>st</sup> degree frame order matrix. These are the values calculated directly from the [http://www.nmr-relax.com/api/4.0/lib.frame_order-module.html lib.frame_order modules]. The graphs were previously all zeros.* Implemented the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse_free_rotor-module.html#compile_1st_matrix_pseudo_ellipse_free_rotor compile_1st_matrix_pseudo_ellipse_free_rotor() function]. This is for the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse_free_rotor-module.html lib.frame_order.pseudo_ellipse_free_rotor module]. The function will calculate the 1<sup>st</sup> degree in-frame frame order matrix for the free_rotor pseudo-ellipse model.
* Speedups and simplifications of the free rotor pseudo-ellipse 2<sup>nd</sup> degree frame order matrix equations.
* Added the torsionless isotropic cone model to the frame order matrix element simulation script.
* Implemented the [http://www.nmr-relax.com/api/4.0/lib.frame_order.double_rotor-module.html#compile_1st_matrix_double_rotor compile_1st_matrix_double_rotor() function]. This is for the [http://www.nmr-relax.com/api/4.0/lib.frame_order.double_rotor-module.html lib.frame_order.double_rotor module]. The function will calculate the 1<sup>st</sup> degree frame order matrix for the double_rotor model.* Created the Grace graphs for the double rotor model 1<sup>st</sup> degree frame order matrix. These are the values calculated directly from the [http://www.nmr-relax.com/api/4.0/lib.frame_order-module.html lib.frame_order modules]. The graphs were previously all zeros.* Recreated all of the simulated pseudo-ellipse frame order matrix element graphs. These are now in the Kronecker product notation so that they will match the graphs calculated using the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse-module.html relax lib.frame_order.pseudo_ellipse module].* Fix for the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse-module.html#part_int_daeg1_pseudo_ellipse_22 pseudo-ellipse 1<sup>st</sup> degree frame order matrix Daeg22 ᛞ<sub>22</sub> element].
* Updated all of the pseudo-ellipse 1<sup>st</sup> degree frame order matrix graphs for the recent fix.
* Converted the Sobol' rotation matrices to float32 in the frame order target function. This is to conserve huge amounts of memory to allow for more Sobol' points to be used. For example for the models which use 3D Sobol' points (isotropic cone and pseudo-ellipse), a maximum of 50000 Sobol' points requires 50000000 to be created, using about 15 Gb of RAM.
* A few Frame_order system test updates for the float64 to float32 memory saving changes. The chi-squared value of 3 tests was slightly different.
* Bug fix for the activation of quadratic integration in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The calls to the [http://www.nmr-relax.com/manual/frame_order_quad_int.html frame_order.quad_int user function] in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order.Frame_order_analysis-class.html#optimisation optimisation() method ] did not supply an argument so the user function was defaulting to False rather than the True value required.
* The [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] summary functions are now more robust. If the data pipe already exists for some reason, it is deleted prior to the new one being created.
* Changed the f[http://www.nmr-relax.com/manual/rame_order_quad_intframe_order_quad_int.html rame_orderframe_order.quad_int user function] argument default to True. This means that calling the user function without arguments will activate the quadratic integration rather than turning it off.
* Added the isotropic cone model frame order matrix simulation graphs for the cone opening angle &theta;<sub>x</sub>.
* Created and added all of the torsionless isotropic cone simulated frame order matrix element graphs.
* Added the frame order matrix element graphs for the double rotor model.
* A divide by zero fix for the torsionless pseudo-ellipse. This is in the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse_torsionless-module.html#compile_2nd_matrix_pseudo_ellipse_torsionless compile_2nd_matrix_pseudo_ellipse_torsionless() relax library function].
* A divide by zero fix for the free rotor pseudo-ellipse. This is in the [http://www.nmr-relax.com/api/4.0/lib.frame_order.pseudo_ellipse_free_rotor-module.html#compile_2nd_matrix_pseudo_ellipse_free_rotor compile_2nd_matrix_pseudo_ellipse_free_rotor() relax library function].
* The 1<sup>st</sup> angle for the calculated frame order matrix graphs is 0 for all non pseudo-ellipse models. This is for the frame_order_solution.py script. Only the pseudo-ellipse models where numerical integration is required fail for the angle of 0.0. Therefore the changing of the first angle from 0.0 to 0.01 only occurs for the pseudo-ellipse models. All graphs have been updated.
* The 1<sup>st</sup> pseudo-ellipse torsion angle value in the frame order matrix graphs is now 0.0. Only the cone opening angles set to 0.0 cause a failure in the pseudo-ellipse models, so the torsion angle is now allowed to start at exactly zero.
* Redesign of the free rotor isotropic cone frame order model - the order parameter has been replaced. From the frame order matrix element graphs in test_suite/shared_data/frame_order/sim_vs_pred_matrix, specifically Sijkl_iso_cone_free_rotor_in_frame_theta_x_calc.agr, Sijkl_iso_cone_free_rotor_axis2_1_3_theta_x_calc.agr, and Sijkl_iso_cone_free_rotor_out_of_frame_theta_x_calc.agr, it is clear that the symmetry of the order parameter after 120 degrees causes the 2<sup>nd</sup> degree frame order matrix to be incorrectly estimated. Therefore the S1 order parameter has been replaced with the original cone opening angle cone_theta. All parts of relax have been updated for this large conversion.
* Updated the frame order matrix element graphs for the free rotor isotropic cone fixes. The cone S1 parameter has been converted back to the original cone &theta; opening half-angle, allowing the 2<sup>nd</sup> degree frame order matrix elements to be properly calculated for all motions.
* Eliminated the lib.frame_order.iso_cone.populate_*() functions. The populate_1st_eigenframe_iso_cone() function was unused and incorrect, so it was deleted. The contents of the populate_2nd_eigenframe_iso_cone() function have been shifted [http://www.nmr-relax.com/api/4.0/lib.frame_order.iso_cone-module.html#compile_2nd_matrix_iso_cone compile_2nd_matrix_iso_cone() ] as a separate function is unnecessary. This now matches all the other [http://www.nmr-relax.com/api/4.0/lib.frame_order-module.html lib.frame_order modules].
* Bug fix for the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function]. The incorrect model number was being specified and hence the simulation was not starting from the optimised average domain position but rather the arbitrary position of the original structure.
* Manual Python 3 fixes for the dict.key() function which returns a list or iterator in Python 2 or 3. This matches r26519 in trunk.
* Python 3 fixes via 2to3 - the spacing around commas has been fixed. The command used was: 2to3 -j 4 -w -f ws_comma .
* Python 3 fixes via 2to3 - the xrange() function has been replaced by range(). The command used was: 2to3 -j 4 -w -f xrange .
* Started to create the Frame_order[http://www.nmr-relax.test_pdb_model_rotor system testcom/api/4. This will be used 0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_rotor_z_axis Frame_order.test_pdb_model_rotor system test]. This will be used to check that the PDB representations of the frame order motions are correct.* Modified the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] backend to handle missing structural data. The create_ave_pos() function of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric -module now checks that cdp.structure exists, and if not a warning is given and html#create_ave_pos create_ave_pos() function] of the PDB file creating is skipped.* Fixes for the [http:/[http://www.nmr-relax.com/manualapi/4.0/frame_order_pdb_modelspecific_analyses.html frame_order.pdb_model user function] backend for when no data is presentgeometric-module. The pipe_centre_of_mass() function of pipe_controlhtml specific_analyses.structureframe_order.mass geometric module is ] now called with the missing_error flag set to False so checks that cdp.structure exists, and if not a warning is given and the PDB generation can continue with the CoM set to [0, 0, 0]file creating is skipped.* The geometric representation part of Fixes for the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] now checks parametersbackend for when no data is present. This calls the specific_analysesThe [http://www.frame_ordernmr-relax.checks.check_parameters Check object to make sure that all necessary parameters for the model existcom/api/4.* Completed the Frame_order0/pipe_control.test_pdb_model_rotor system teststructure. This now sets the rotor axis to the zmass-axis module.html#pipe_centre_of_mass pipe_centre_of_mass(with a printout to be sure), sets the torsion angle to zero for simplicity, creates a new data pipe and loads the PDB representation file, then checks all of the key atom coordinatesfunction] of [http://www.nmr-relax.* Fixes for the unit tests of the libcom/api/4.0/pipe_control.structure.frame_order_matrix_ops mass-module for the free rotor isotropic cone. The S1 order parameter has been eliminated due to angles &gt; &pi;/2html pipe_control.structure.0 causing mass module] is now called with the frame order matrix missing_error flag set to be incorrectly predicted. Therefore all unit tests have been converted to use False so that the cone opening angle &theta; instead. In addition, PDB generation can continue with the test_compile_2nd_matrix_iso_cone_free_rotor_disorder had been modified CoM set to pass with the incorrect frame order matrix by comparing to the half cone frame order matrix rather than the identity frame order matrix[0, 0, 0].* Fix for inverted axes in the new Frame_order.test_pdb_model_rotor system test.* Huge bug fix for The geometric representation part of the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] - the single axis direction was incorrectnow checks parameters. In This calls the PDB representation of the frame order motion for the rotor and isotropic cone models (rotor, free rotor, isotropic cone, free rotor isotropic cone, and torsionless isotropic cone), the X and Z axes were swapped[http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order. This is because the eigenframe of the motion was being incorrectly constructed via the libchecks-module.geometryhtml#check_parameters specific_analyses.rotationsframe_order.two_vect_to_R() functionchecks. For better control, check_parameters Check object] to make sure that all necessary parameters for the specific_analysesmodel exist.frame_order.geometric* Completed the [http://www.frame_from_axis() function has been creatednmr-relax. This constructs a full motional eigenframe from the Zcom/api/4.0/test_suite.system_tests.frame_order.Frame_order-axisclass. The problem was detected via the new html#test_pdb_model_rotor_z_axis Frame_order.test_pdb_model_rotor system test].* Size fix for This now sets the rotor representation from axis to the [http://www.nmrz-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. The size problem was detected via axis (with a printout to be sure), sets the torsion angle to zero for simplicity, creates a new data pipe and loads the Frame_order.test_pdb_model_rotor system test. The rotors in the PDB representation were PDB representation file, then checks all fixed in size, and ignored the 'size' argument of the [key atom coordinates.* Fixes for the unit tests of the [http://www.nmr-relax.com/manualapi/4.0/frame_order_pdb_modellib.html frame_order.pdb_model user functionmatrix_ops-module.html lib.frame_order.matrix_ops module]for the free rotor isotropic cone. The size argument is now passed into the [http:S1 order parameter has been eliminated due to angles &gt; &pi;//www.nmr-relax.com/api/42.0/specific_analysescausing the frame order matrix to be incorrectly predicted.frame_order.geometric-module.html#add_rotors add_rotors() function] of Therefore all unit tests have been converted to use the cone opening angle &theta; instead. In addition, the [http://www.nmr-relax.com/api/4.0/specific_analysestest_suite.unit_tests.frame_order_lib.geometric_frame_order.test_matrix_ops.Test_matrix_ops-moduleclass.html specific_analyses.frame_order.geometric module#test_compile_2nd_matrix_iso_cone_free_rotor_disorder test_compile_2nd_matrix_iso_cone_free_rotor_disorder] and passed on had been modified to pass with the rotor() function of incorrect frame order matrix by comparing to the half cone frame order matrix rather than the lib.structure.represent.rotor moduleidentity frame order matrix.* Created Fix for inverted axes in the Frame_ordernew [http://www.test_pdb_model_rotor2 system test to check for an offset pivotnmr-relax.com/api/4. The pivot is set to [1, 0, 1] so that the rotor axis is tilted /test_suite.system_tests.frame_order.Frame_order-45 degrees in the xz-plane. And the size of the geometric object is set to 100 Angstrom for better testing of the sizes of the elementsclass.html#test_pdb_model_rotor_z_axis Frame_order.test_pdb_model_rotor system test].* Simplification of Huge bug fix for the Frame_order[http://www.test_pdb_model_rotor system testnmr-relax. The size is now programatically handledcom/manual/frame_order_pdb_model.* Created html frame_order.pdb_model user function] - the Frame_order.test_pdb_model_iso_cone system testsingle axis direction was incorrect. This is for checking In the PDB representation of the isotropic cone frame order model created by motion for the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]rotor and isotropic cone models (rotor, free rotor, isotropic cone, free rotor isotropic cone, and torsionless isotropic cone), the X and Z axes were swapped. It checks both A and B representations.* Fix for This is because the cone sized created by eigenframe of the motion was being incorrectly constructed via the [http://www.nmr-relax.com/manualapi/frame_order_pdb_model4.html frame_order0/lib.pdb_model user function]geometry. The 'size' argument was not being used at all for the cone sizerotations-module.html#two_vect_to_R lib. It is now passed into the libgeometry.structurerotations.represent.cone.conetwo_vect_to_R() function as ]. For better control, the 'scale' argument.* Small fix for the Frame_order[http://www.test_pdb_model_iso_cone system test for the 'B' representationnmr-relax.* Fix for the representation label positions created by the [http:com/api/4.0/wwwspecific_analyses.nmr-relaxframe_order.com/manual/frame_order_pdb_modelgeometric-module.html #frame_from_axis specific_analyses.frame_order.pdb_model user geometric.frame_from_axis() function]has been created. The 'size' argument was not being used at all for This constructs a full motional eigenframe from the representation title atomsZ-axis. It is now passed into The problem was detected via the add_titles() function as the displacement argument + 10 Angstromnew [http://www.* Printout fix for the axis in the Frame_ordernmr-relax.com/api/4.test_pdb_model_iso_cone system test0/test_suite.* Created the Frame_ordersystem_tests.test_pdb_model_iso_cone_xz_plane_tilt frame_order.Frame_order-class.html#test_pdb_model_rotor_z_axis Frame_order.test_pdb_model_rotor system test].* Size fix for the rotor representation from the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. The size problem was detected via the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_rotor_z_axis Frame_order.test_pdb_model_rotor system test]. The rotors in the PDB representation were all fixed in size, and ignored the 'size' argument of the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. The size argument is now passed into the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#add_rotors add_rotors() function] of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html specific_analyses.frame_order.geometric module] and passed on to the [http://www.nmr-relax.com/api/4.0/lib.structure.represent.rotor-module.html#rotor rotor() function] of the [http://www.nmr-relax.com/api/4.0/lib.structure.represent.rotor-module.html lib.structure.represent.rotor module].* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_rotor_xz_plane_tilt Frame_order.test_pdb_model_rotor2 system test] to check for an offset pivot. The pivot is set to [1, 0, 1] so that the rotor axis is tilted -45 degrees in the xz-plane. And the size of the geometric object is set to 100 Angstrom for better testing of the sizes of the elements.* Simplification of the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_rotor_z_axis Frame_order.test_pdb_model_rotor system test]. The size is now programatically handled.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_iso_cone_z_axis Frame_order.test_pdb_model_iso_cone system test]. This is for checking the PDB representation of the isotropic cone frame order model created by the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. It checks both A and B representations.* Fix for the cone sized created by the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. The 'size' argument was not being used at all for the cone size. It is now passed into the [http://www.nmr-relax.com/api/4.0/lib.structure.represent.cone-module.html#cone lib.structure.represent.cone.cone() function] as the 'scale' argument.* Small fix for the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_iso_cone_z_axis Frame_order.test_pdb_model_iso_cone system test] for the 'B' representation.* Fix for the representation label positions created by the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. The 'size' argument was not being used at all for the representation title atoms. It is now passed into the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#add_titles add_titles() function] as the displacement argument + 10 Angstrom.* Printout fix for the axis in the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_iso_cone_z_axis Frame_order.test_pdb_model_iso_cone system test].* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_iso_cone_xz_plane_tilt Frame_order.test_pdb_model_iso_cone_xz_plane_tilt system test]. This checks the PDB file from the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] for the isotropic cone model with a xz-plane tilt.
* Renamed all of the Frame_order.test_pdb_model_* system tests to be more descriptive.
* Improvements for all of the Frame_order.test_pdb_model_* system tests. The [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#rotate_from_Z rotate_from_Z() method ] has been introduced to simplify the determination of the 3D coordinates expected for the PDB file. This will allow for more advanced testing of the PDB for the cone models.
* Fixes for the printouts from the Frame_order.test_pdb_model_rotor_* system tests.
* Alphabetical ordering of the Frame_order system test methods.
* Fixes for all of the Frame_order system tests - the temporary directories are now being deleted. The [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#tearDown system test base class tearDown() method ] is now being called to properly clean up after the tests.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_pseudo_ellipse_z_axis Frame_order.test_pdb_model_pseudo_ellipse_z_axis system test]. This demonstrates the correct atom coordinates in the PDB file created by the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] for the pseudo-ellipse model along the z-axis.
* Fixes for the checks in the Frame_order.test_pdb_model_* system tests. Atomic positions are now checked with self.assertAlmostEqual() to 3 places, and the residue and atom names and numbers are checked with self.assertEqual().
* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_pseudo_ellipse_xz_plane_tilt Frame_order.test_pdb_model_pseudo_ellipse_xz_plane_tilt system test]. This checks the PDB file created by the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] for the pseudo-ellipse model with a xz-plane tilt. To properly construct the coordinates, the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#rotate_from_Z rotate_from_Z() method ] was modified to accept a rotation matrix argument to allow the geometric shape to be rotated.* Modified the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_iso_cone_xz_plane_tilt Frame_order.test_pdb_model_iso_cone_xz_plane_tilt system test ] to have a cone angle. The cone opening half-angle was previously 0.0. The test now checks the geometric object in the PDB file for a cone opening half-angle of 2.0.* Modified the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_iso_cone_z_axis Frame_order.test_pdb_model_iso_cone_z_axis system test ] to have a cone angle. The cone opening half-angle was previously 0.0. The test now checks the geometric object in the PDB file for a cone opening half-angle of 2.0.* Created two new system tests for the free rotor PDB representation file. This is the file from the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. The two new unit tests are [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_free_rotor_z_axis Frame_order.test_pdb_model_free_rotor_z_axis ] and [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_free_rotor_xz_plane_tilt Frame_order.test_pdb_model_free_rotor_xz_plane_tilt].* Created two new frame order system tests for the free rotor isotropic cone PDB representation file. This is the two PDB files from the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. The two new system tests are [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_iso_cone_free_rotor_z_axis Frame_order.test_pdb_model_iso_cone_free_rotor_z_axis ] and [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_iso_cone_free_rotor_xz_plane_tilt Frame_order.test_pdb_model_iso_cone_free_rotor_xz_plane_tilt].* Created two new frame order system tests for the torsionless isotropic cone PDB representation file. This is the two PDB files from the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. The two new system tests are [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_iso_cone_torsionless_z_axis Frame_order.test_pdb_model_iso_cone_torsionless_z_axis ] and [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_iso_cone_torsionless_xz_plane_tilt Frame_order.test_pdb_model_iso_cone_torsionless_xz_plane_tilt].* Created two new frame order system tests for the free rotor pseudo-ellipse PDB representation file. This is the two PDB files from the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. The two new system tests are [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_pseudo_ellipse_free_rotor_z_axis Frame_order.test_pdb_model_pseudo_ellipse_free_rotor_z_axis ] and [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_pseudo_ellipse_free_rotor_xz_plane_tilt Frame_order.test_pdb_model_pseudo_ellipse_free_rotor_xz_plane_tilt].* Created two new frame order system tests for the torsionless pseudo-ellipse PDB representation file. This is the two PDB files from the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. The two new system tests are [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_pseudo_ellipse_torsionless_z_axis Frame_order.test_pdb_model_pseudo_ellipse_torsionless_z_axis ] and [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_pseudo_ellipse_torsionless_xz_plane_tilt Frame_order.test_pdb_model_pseudo_ellipse_torsionless_xz_plane_tilt].* Created two new frame order system tests for the double rotor PDB representation file. This is the two PDB files from the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. The two new system tests are [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_double_rotor_z_axis Frame_order.test_pdb_model_double_rotor_z_axis ] and [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_double_rotor_xz_plane_tilt Frame_order.test_pdb_model_double_rotor_xz_plane_tilt].
* Added relax scripts and PDB files which match the Frame_order.test_test_pdb_model_* system tests. These were used to construct and visually check the tests in a molecular viewer. These could be a useful reference, so have been added to the repository.
* Simplified all of the Frame_order.test_pdb_model_* system tests. The atom, residue and 3D coordinate checking in all these methods has been shifted into the common [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#check_pdb_model_representation check_pdb_model_representation() method]. This dramatically decreases the amount of code in the system test file.* Simplification for all of the Frame_order.test_pdb_model_* system tests. The model setup in all of these tests has been merged into the common [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#setup_model setup_model() method]. This not only removes a large quantity of repetitive code, but the new method can also be used for constructing future tests, for example for checking the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function].* Created an initial version of the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_rotor_z_axis Frame_order.test_simulate_rotor_z_axis system test]. This is to check the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] rotor model along the z-axis. It currently fails due to a bug in the user function.* Fixes for the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_rotor_z_axis Frame_order.test_simulate_rotor_z_axis system test]. Now 6 atoms are being created at X, -X, Y, -Y, Z, and -Z, 100 Angstrom from the origin. This is required so that the CoM is at the origin, to allow the CoM-pivot vector to be unchanged at [1, 0, 0] so that the axis &alpha; angle of &pi;/2 creates an axis parallel to Z. The origin to atom distance check has also been loosened due to the PDB truncation artifact.* Fix for the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_pdb_model_free_rotor_xz_plane_tilt Frame_order.test_pdb_model_free_rotor_xz_plane_tilt system test]. This was broken while implementing the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_rotor_z_axis Frame_order.test_simulate_rotor_z_axis system test]. Instead of shifting the 6 atom structure so its CoM is the pivot of the motion when creating the atoms, now the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_rotor_z_axis Frame_order.test_simulate_rotor_z_axis system test ] sets the average domain translation vector to the pivot to achieve the same result. This preserves the z-axis orientation of the rotor models.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_free_rotor_z_axis Frame_order.test_simulate_free_rotor_z_axis system test]. This is to check the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] for the free rotor model along the z-axis.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_iso_cone_z_axis Frame_order.test_simulate_iso_cone_z_axis system test]. This is to check the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] for the isotropic cone model along the z-axis.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_iso_cone_free_rotor_z_axis Frame_order.test_simulate_iso_cone_free_rotor_z_axis system test]. This is to check the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] for the free rotor isotropic cone model along the z-axis.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_iso_cone_torsionless_z_axis Frame_order.test_simulate_iso_cone_torsionless_z_axis system test]. This is to check the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] for the torsionless isotropic cone model along the z-axis.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_pseudo_ellipse_z_axis Frame_order.test_simulate_pseudo_ellipse_z_axis system test]. This is to check the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] for the pseudo-ellipse model along the z-axis.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_pseudo_ellipse_xz_plane_tilt Frame_order.test_simulate_iso_cone_xz_plane_tilt system test]. This is to check the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] for the torsionless isotropic cone model with a xz-plane tilt.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_pseudo_ellipse_free_rotor_z_axis Frame_order.test_simulate_pseudo_ellipse_free_rotor_z_axis system test]. This is to check the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] for the free rotor pseudo-ellipse model along the z-axis.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_pseudo_ellipse_xz_plane_tilt Frame_order.test_simulate_pseudo_ellipse_xy_plane_tilt system test]. This is to check the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] for the pseudo-ellipse model with a xz-plane tilt.* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_pseudo_ellipse_torsionless_z_axis Frame_order.test_simulate_pseudo_ellipse_torsionless_z_axis system test]. This is to check the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] for the torsionless pseudo-ellipse model along the z-axis.* Fix for the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_pseudo_ellipse_xz_plane_tilt Frame_order.test_simulate_pseudo_ellipse_xz_plane_tilt system test ] name. This was mislabelled as Frame_order.test_simulate_pseudo_ellipse_xy_plane_tilt.* Redesign of the [http://www.nmr-relax.com/manual/pymol_frame_order.html pymol.frame_order user function]. This user function was still fitting to the old design in the relax trunk. It has been updated for the frame_order_cleanup branch whereby the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] has been split up and the positional distribution has been replaced by the Brownian simulation [user function http://www.nmr-relax.com/manual/frame_order_simulate.html user function frame_order.simulate].
* Better checking for the non-moving domain setup. The [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] will now raise a RelaxError if the [http://www.nmr-relax.com/manual/frame_order_ref_domain.html frame_order.ref_domain user function] has not been called to set up the non-moving domain.
* Updated the [http://www.nmr-relax.com/manual/frame_order_ref_domain.html frame_order.ref_domain user function] for the current branch design. This user function was quite out of date. The alignment tensor checks have been removed, to allow this to be used in the absence of base data. And the user function description has been updated.
* Expanded all of the Frame_order.test_simulate_* system tests. Two atoms have been added to the origin [0, 0, 0], one in the moving domain, the other in the reference non-moving domain. The positions of these atoms are checked to make sure that the domain systems are correctly handled.
* Expanded the double rotor model description in the [http://www.nmr-relax.com/manual/frame_order_select_model.html frame_order.select_model user function].
* Added the pipe_name argument to the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks-module.html#check_model_func frame order check_model() function]. This is for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks -module.html specific_analyses.frame_order.checks module].* Converted the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks -module .html specific_analyses.frame_order.checks module] to the new Check object design. This follows from http://wiki.nmr-relax.com/Relax_source_design#The_check_.2A.28.29_functions and the changes significantly simplify the checking objects.* Improved checking for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.data-module.html#generate_pivot frame order generate_pivot() function]. The [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks-module.html#check_model check_model() checking object ] is now called to make sure the frame order model has been specified, as this is essential for this function.* Created two system tests for the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] for the double rotor model. These are [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_double_rotor_mode1_z_axis Frame_order.test_simulate_double_rotor_mode1_z_axis] and [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_double_rotor_mode2_z_axisFrame_order.test_simulate_double_rotor_mode2_z_axis].* Created two system tests for the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function] for the double rotor model. These are [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_double_rotor_mode1_xz_plane_tilt Frame_order.test_simulate_double_rotor_mode1_xz_plane_tilt] and [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_simulate_double_rotor_mode2_xz_plane_tiltFrame_order.test_simulate_double_rotor_mode2_xz_plane_tilt].
* Added relax scripts which match the Frame_order.test_test_simulate_* system tests. These are the tests of the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function]. These were used to construct and visually check the Brownian simulation and PDB model representation in a molecular viewer. These could be a useful reference, so have been added to the repository.
* Fix for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] when only the 'rigid' model is optimised. The final summary table printout for the number of Sobol' points used was failing as there were no models in the table. The table is now only printed out if non rigid models are present in the model list.
* Introduced the nested_params_ave_dom_pos argument to the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This allows the average domain position to be set to no rotations and translations rather than taking the average position from the rotor or free-rotor model. This can be useful when large motions are present causing the rigid model to have unreasonable domain positions.
* Fix for the [http://www.nmr-relax.com/manual/frame_order_permute_axes.html frame_order.permute_axes user function] description to allow the manual to be compiled. The table caption containing the user function name was causing the LaTeX compilation to fail. Therefore the captions have been rewritten to avoid the user function name.
* Modified the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#check_chi2 frame order system test check_chi2() method ] to test the [http://www.nmr-relax.com/manual/statistics_model.html statistics.model user function]. This causes all of the Frame_order.test_cam_* system tests to fail, as the user function backend is not implemented for the frame order analysis.* Implemented the frame order analysis backend for the [http://www.nmr-relax.com/manual/statistics_model.html statistics.model] and [http://www.nmr-relax.com/manual/statistics_aic.html statistics.aic] user functions. This simply required aliasing the specific analysis API common [http://www.nmr-relax.com/api/4.0/specific_analyses.api_common.API_common-class.html#_get_model_container_cdp _get_model_container_cdp() method ] to get_model_container().* Bug fix for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.api.Frame_order-class.html#base_data_loop frame order specific analysis API base_data_loop() method]. This was looping over non-existent PCS and RDC data. Now the alignment ID is checked for in the interatomic data container 'rdc' data structure and the spin container 'pcs' data structure, as well as values of None, before yielding the data.* Created a large set of system tests for implementing the [http://www.nmr-relax.com/manual/frame_order_distribute.html frame_order.distribute user function]. This user function will be similar to [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate]. However instead of creating a PDB file with models from a pseudo-Brownian simulation, the [http://www.nmr-relax.com/manual/frame_order_distribute.html frame_order.distribute user function] will generate a PDB file of models forming a uniform distribution of structures covering the full frame order motional space. The new system tests are: Frame_order.test_distribute_double_rotor_mode1_xz_plane_tilt, Frame_order.test_distribute_double_rotor_mode1_z_axis, Frame_order.test_distribute_double_rotor_mode2_xz_plane_tilt, Frame_order.test_distribute_double_rotor_mode2_z_axis, [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_distribute_free_rotor_z_axisFrame_order.test_distribute_free_rotor_z_axis], [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_distribute_iso_cone_z_axis Frame_order.test_distribute_iso_cone_z_axis], [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_distribute_iso_cone_xz_plane_tiltFrame_order.test_distribute_iso_cone_xz_plane_tilt], [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_distribute_iso_cone_torsionless_z_axisFrame_order.test_distribute_iso_cone_torsionless_z_axis], [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_distribute_pseudo_ellipse_xz_plane_tiltFrame_order.test_distribute_pseudo_ellipse_xz_plane_tilt], [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_distribute_pseudo_ellipse_z_axisFrame_order.test_distribute_pseudo_ellipse_z_axis], [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_distribute_pseudo_ellipse_free_rotor_z_axisFrame_order.test_distribute_pseudo_ellipse_free_rotor_z_axis], [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_distribute_pseudo_ellipse_torsionless_z_axisFrame_order.test_distribute_pseudo_ellipse_torsionless_z_axis], [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_distribute_rotor_z_axisFrame_order.test_distribute_rotor_z_axis]. These are aliases for the equivalent Frame_order.test_simulate_* system tests which have had the 'type' keyword argument added, defaulting to 'sim', which allows to switch between the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate] and [http://www.nmr-relax.com/manual/frame_order_distribute.html frame_order.distribute] user functions. The concept behind these system tests are the same for both user functions, so the code is shared.
* Created the front-end of the [http://www.nmr-relax.com/manual/frame_order_distribute.html frame_order.distribute user function]. This is a copy and modification of the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function], as the concepts are similar.
* Small modification of the [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function]. The GUI file opening dialog wildcard selectors are now set to all PDB file types (plain text, bzip2 compressed, and gzip compressed).
* Added the [http://www.nmr-relax.com/manual/frame_order_distribute.html frame_order.distribute user function] to the auto-analysis results output. This will allow both the pseudo-Brownian simulation and uniform distribution PDB files to be available to the user in all results directories (excluding the intermediate results for speed).
* Implemented the back-end of the [http://www.nmr-relax.com/manual/frame_order_distribute.html frame_order.distribute user function]. This follows the design of the pseudo-Brownian simulation [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function]. The [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.uf-module.html#distribute specific_analyses.frame_order.uf.distribute() function ] has been created as a modified copy of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.uf-module.html#simulate simulate() function ] of the same module. This simply performs checks and assembles the data, passing into the new [http://www.nmr-relax.com/api/4.0/lib.frame_order.simulation-module.html#uniform_distribution lib.frame_order.simulate.uniform_distribution() function], which itself is a modified copy of the [http://www.nmr-relax.com/api/4.0/lib.frame_order.simulation-module.html#brownian brownian() function ] in the same module.
* Introduced the max_rotations argument into the [http://www.nmr-relax.com/manual/frame_order_distribute.html frame_order.distribute user function]. This is used to prevent the user function from running forever. This happens whenever a cone opening angle or torsion angle is zero, and hence the random sampling of the rotational space will never find rotations within the motional distribution.
* Improved control of the [http://www.nmr-relax.com/manual/frame_order_distribute.html frame_order.distribute user function] in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The maximum number of rotations can now be set, and the argument for the total states for the distribution has been shortened.
* Deleted a number of Frame_order.test_distribute* system tests. These are the four double rotor model tests. The [http://www.nmr-relax.com/manual/frame_order_distribute.html frame_order.distribute user function] cannot operate on these test cases as one of the two torsion angles are set to zero in the tests.
* Fix to allow Monte Carlo simulations to be repeated in the frame order analysis. The code for checking for pre-existing Monte Carlo simulation data structures and raising a RelaxError if anything is found has been deleted.
* Fix of a fatal bug preventing the frame order analysis to be run on a multi-processor system. The multi-processor code was calling the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points count_sobol_points() function ] of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html specific_analyses.frame_order.optimisation module ] to give feedback when calling the [http://www.nmr-relax.com/manual/minimise_execute.html minimise.execute] or [http://www.nmr-relax.com/manual/minimise_calculate.html minimise.calculate] user functions. However this was run in the slave command run() method, hence would be executed on the slave. The problem is that [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#count_sobol_points count_sobol_points() ] performs a number of checks on the current data pipe, however the slaves do not have any data pipes set up.
* Added the new 'atom_id' argument to the [http://www.nmr-relax.com/manual/frame_order_distribute.html frame_order.distribute user function]. This uses the new inverse selection functionality recently introduced into the trunk to delete all structural data not matching the atom_id from the copy of the loaded structural data string prior to generating the distribution of structures.
* Bug fix for the frame order target function (introduced recently). The copy.deepcopy() function is now used for all numpy input data to avoid the data from being modified between function calls. This is important for missing RDC and PCS data which is sent in as NaN values. In the [http://www.nmr-relax.com/api/4.0/target_functions.frame_order.Frame_order-class.html#__init__ target function __init__() method], the NaN values are replaced by 0.0 after the self.missing_rdc and self.missing_pcs structures have been by checking for NaN values. However the recent [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html specific_analyses.frame_order.optimisation ] change in the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation.Frame_order_minimise_command-class.html Frame_order_minimise_command slave command] to printout the number of integration points resulted in the target function being initialised twice, causing all NaN values to be 0.0 in the second initialisation. Hence all missing data was being treated as real data with values of 0.0.
* Created a new skeleton chapter in the relax manual for the frame order analysis.
* Added a theory section to the new frame order chapter. This is taken from an in-preparation supplement.
* Removed the printout of pylint STDERR messages in the find_unused_imports.py developer script.
* Elimination of a number of wildcard imports from some frame order timing scripts. This is to avoid excessive function imports.
* Removal of an unused import from the [http://www.nmr-relax.com/api/4.0/user_functions.frame_order-module.html user_functions.frame_order module].
* Removal of unused imports from the test_suite/shared_data/frame_order/simulation scripts.
* Updated some unused frame order scripts to use the new minimise user function design.
* Unused import cleanup of all scripts in the test_suite/shared_data/dispersion/ directories. This both removes unused imports, or uncomments but deactivates temporarily unused code.
* Removed unused imports from the scripts in the test_suite/shared_data/frame_order subdirectories.
* Removed unused imports from the Spectrum [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.spectrum-module.html spectrum system test base module].* Removed unused imports from the Relax_disp [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.relax_disp-module.html relax_disp system test base module].
* Clean up of all unused imports in the system test scripts.
* Removed unused imports from the Structure [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.structure-module.html structure system test base module].* Changed how the import of [http://www.nmr-relax.com/api/4.0/lib.regex-module.html lib.regex ] in the Test_regex [http://www.nmr-relax.com/api/4.0/test_suite.unit_tests._lib.test_regex-module.html test_regex unit tests ] is used. The module is no longer stored in the TestCase class namespace, but is rather called directly within the unit test.* Changed the import of [http://www.nmr-relax.com/api/4.0/pipe_control.state-module.html pipe_control.state ] in the [http://www.nmr-relax.com/api/4.0/test_suite.unit_tests._pipe_control.test_state-module.html test_state unit test module].
* Removed unused imports from the unit tests.
* Added another exception to the find_unused_imports.py devel script. This is for the [http://www.nmr-relax.com/api/4.0/test_suite.unit_tests._lib._geometry.test_rotations -module .html test_suite.unit_tests._lib._geometry.test_rotations module] which programatically obtains the imports using globals().* Added a workaround or hack for exceptions for circular imports in the find_unused_imports.py script. This is currently for the [http://www.nmr-relax.com/api/4.0/test_suite.unit_tests._lib.test___init__ -module.html test_suite.unit_tests._lib.test___init__] and [http://www.nmr-relax.com/api/4.0/test_suite.unit_tests._lib._geometry.test___init__-module.html test_suite.unit_tests._lib._geometry.test___init__ ] modules.* Removal of unused imports from the [http://www.nmr-relax.com/api/4.0/test_suite.gui_tests-module.html GUI test modules].* Removed all unused imports from the [http://www.nmr-relax.com/api/4.0/pipe_control-module.html pipe_control package].* Added import exceptions for the [http://www.nmr-relax.com/api/4.0/lib.compat -module .html lib.compat module] in the find_unused_imports.py devel script.* Added import exceptions for the [http://www.nmr-relax.com/api/4.0/lib.xml -module .html lib.xml module] in the find_unused_imports.py devel script. These are needed because of eval() function calls on XML stored Python data structures.* Removed all unused imports from the [http://www.nmr-relax.com/api/4.0/lib-module.html relax library package].* Removed all unused imports from the [http://www.nmr-relax.com/api/4.0/target_functions-module.html target_functions package].
* Removed unused imports from the developer scripts.
* Removed all unused imports from the [http://www.nmr-relax.com/api/4.0/specific_analyses-module.html specific_analyses package].* Removed all unused imports from the [http://www.nmr-relax.com/api/4.0/auto_analyses-module.html auto_analyses package].
* Removed all unused imports from the numdifftools extern package.
* Removal of the last unused import from the [http://www.nmr-relax.com/api/4.0/target_functions-module.html target_functions package].
* Fix for the PCS system tests on old Python versions. The self.assertAlmostEqual() function cannot compare None values in earlier Python versions.
* MS Windows fix for the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#test_generate_rotor2_distribution Frame_order.test_generate_rotor2_distribution system test]. The locale.setlocale() function call for correctly setting up a spinning progress meter was failing on MS Windows. The error is now caught and the local setting skipped.
* Added Python 3.5 to the manual C module compilation script.
* Added Python 3.5 to the Python multiversion test suite script.
<section end=changes/>
=== Bugfixes ===
<section begin=bugfixes/>
<section end=bugfixes/>
== Links ==
<section begin=links/>
* [http://wiki.nmr-relax.com/Relax_4.0.0 Official release notes on the relax wiki].
* [https://{{gna link|url=gna.org/forum/forum.php?forum_id=2514 |text=Gna! news item]}}.
* [http://article.gmane.org/gmane.science.nmr.relax.announce/68 Gmane mailing list archive].
* [http://www.mail-archive.com/relax-announce%40gna.org/msg00059.html The Mail Archive].
* [https://mail.gna.org/public/relax-announce/2015-10/msg00001.html Local archives].
* [https://marc.info/?l=relax-announce&m=144376869310289144485916126262&w=2 Mailing list ARChives (MARC)].
{{:Softpedia}}
<section end=links/>
== Announcements ==
{{:relax release announcements}}
== See also ==
* [http://www.nmr-relax.com/api/4.0/ The relax 4.0 API documentation]
{{:relax release see also}}
[[Category:Relaxation dispersion Frame order analysis]]
Trusted, Bureaucrats
4,223

edits