* Changed the average domain position parameter values in the CaM frame order system tests. This is in the base script used by all scripts in test_suite/system_tests/scripts/frame_order/cam/. The translation vector coordinates are now set, as well as the CoM Euler angle rotations. These come from the log file of the test_suite/shared_data/frame_order/cam/superimpose.py script, and are needed due to the simplification of the average domain position mechanics now mimicking the Kabsch superimposition algorithm.
* The [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.frame_order.Frame_order-class.html#mesg_opt_debug CaM frame order system test mesg_opt_debug() method] now prints out the translation vector. This is printed out at the end of all CaM frame order system tests to help with debugging when the test fails.
* Change for how the CaM frame order system test scripts handle the average domain position rotation. The trick of pre-rotating the 3D coordinates was used to solve the {α, β, γ} -> {0, β', γ'} angle conversion problem in the rotor models no longer works now that the average domain position mechanics has been simplified. Instead, high precision optimised β' and γ' values are now set, and the ave_pos_alpha value set to None. The high precision parameters were obtained with the frame_order.py script located in the directory test_suite/shared_data/frame_order/cam/free_rotor. The free rotor target function was modified so that the translation vector is hard-coded to [-20.859750185691549, -2.450606987447843, -2.191854570352916] and the axis θ and φ angles to 0.96007997859534299767 and 4.0322755062196229403. These parameters were then commented out for the model in the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.parameters-module.html module specific_analyses.frame_order.parameters ] so only β' and γ' were optimised. Iterative optimisation was used with increasing precision, ending up with high precision using 10,000 Sobol' points.
* Updated a number of the CaM frame order system tests for the higher precision data. The new data results in chi-squared values at the real solution to be much closer to zero.
* Change for how the CaM frame order free-rotor pseudo-ellipse test script handle the average position.
* Comment fixes for the eigenframe reconstruction in the frame order target functions.
* Converted the [http://www.nmr-relax.com/api/4.0/target_functions.frame_order.Frame_order-class.html#func_double_rotor_qr_int double rotor frame order model target function] to use the new parameterisation.
* Fix for the PDB representation generated by [http://www.nmr-relax.com/manual/frame_order.pdb_modelframe_order_pdb_model.html frame_order.pdb_model] for the free rotor pseudo-ellipse.
* Fix for 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]. As the free rotor has undergone a reparameterisation, the chi-squared value is now higher. The value is reasonable as the free rotor can never model the rigid system.
* Removed the structure loading and transformation from the CaM frame order system tests. This was mimicking the old behaviour of the auto-analysis. However as that behaviour has been shifted into the backend of the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function], which is called by these system tests as well, the code is now redundant and is wasting test suite time.
* Clean up of the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] definitions. Some elements were no longer of use, and some descriptions have been updated.
* Redesign of the [http://www.nmr-relax.com/manual/pymol_frame_order.html pymol.frame_order user function] to match the redesign of [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model]. The file names are no longer given but rather the file root. Then all PDB files matching that file root in the given directory will be loaded into PyMOL.
* Updated all of the frame order scripts for the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model ] and [http://www.nmr-relax.com/manual/pymol_frame_order.html pymol.frame_order ] changes. These are the scripts for the CaM frame order test data.
* Redesign of the average domain position part of the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function]. The Monte Carlo simulations are now represented. If the file root is set to the default of 'ave_pos', then these will be placed in the file 'ave_pos.pdb', or a compressed version. Each simulation is in a different model, matching the geometric representation '*_sim.pdb' files. The original structure is copied for each model, and then rotated to the MC simulation average position.
* Change all of the [http://www.nmr-relax.com/manual/domain.html domain user function] calls in the frame order CaM test data scripts. The domains are now identified by the molecule name rather than the range of residues. This allows non-protein atoms, for example the Ca<sup>2+</sup> atoms, to be rotated to the average domain position as well.
* Removed all remaining uncompressed PDB files from the CaM test data directories. These were complicating the debugging of the [http://www.nmr-relax.com/manual/pymol_frame_order.html pymol.frame_order user function], as they were being loaded on top of the compressed versions.
* Removed some rotation files from the CaM frame order test data directories. These files are no longer of any use and just take up large amounts of room for nothing.
* Added titles to the frame order geometric representation PDB files from [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model]. These are in the form of special Ti atoms placed 40 Angstrom away from the pivot along the z-axis of the system, or shifted 3 more Angstrom for the Monte Carlo simulations. These are used to label the alternative representations or the Monte Carlo simulation representations. The residue type is set to TLE and this has been registered in the internal structural object. The [http://www.nmr-relax.com/manual/pymol_frame_order.html pymol.frame_order user function] now calls the [http://www.nmr-relax.com/api/4.0/pipe_control.pymol_control-module.html#represent_titles represent_titles() function ] to select these atoms, hide them, and then add a long descriptive title. The atom name is used to distinguish between different titles.
* Changed the alternative representation names for the frame order geometric objects. The aim is to put both representations on a more equal footing, as they are identical solutions. Hence the inverted representation might be the correct representation of the domain motions. So instead of calling these 'positive' and 'negative', the 'A' and 'B' notation will be used. This affects the names of the files produced by the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] as well as the internal titles. Instead of ending the files with "*_pos.*" and "*_neg.*", these have been changed to "*_A.*" and "*_B.*". The atoms used for the titles have also been renamed, and the [http://www.nmr-relax.com/manual/pymol_frame_order.html pymol.frame_order user function] now labels the titles using the 'A' and 'B' notation.
* Changes to the rotor object in the frame order geometric representations. For the isotropic and pseudo-elliptic cone models, the rotor is now halved. Instead of having two axes radiating from the central pivot and terminating in the propeller blades, now only the positive axis is shown lying in the centre of the cone.
* Fixes for the MC simulation rotor objects in the frame order geometric representation. The axes of the Monte Carlo simulation rotors objects were being set to the original values and not to the simulation values.
* Fixes for the titles in the frame order geometric representation from [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model]. There were a few bugs for a number of the frame order models preventing this code from working.
* Redesign of the geometric representation of the cone structural objects to allow for models. The old representation was not compatible with the PDB model concept whereby each model must have the same number of atoms. To handle this situation, the cone objects have been simplified. Specifically the cone cap. The old behaviour was to remove all points outside of the cone when creating the cone cap, and then to stitch the cap to the cone edge in a subsequent step. Now the behaviour is that all points outside of the distribution are shifted to the cone edge. This avoids the need to stitch the cap to the edge. This behaviour means that all cones with the same inc value will have the same number of atoms. The cones for the pseudo-ellipses are not as nice as the latitudinal lines are not strait at the cone edge, but at least creating multiple models with different cone sizes is now possible.
* Bug fix for the y-axis rotation matrix for the double rotor Sobol' integration points. The matrix was inverted.
* Added model support for the rotor geometric object. This is the structural object used in the frame order analysis to create PDB representations of rotor motions. The number of atoms created for the rotor is now constant, allowing for models whereby the atom number and connectivity must be preserved between all models.
* Changed the grid search pivot displacement frame order parameter. Instead of searching from 0 to 50 Angstroms, the search is now from 10 to 50. This is to avoid the edge case of pivot_disp = 0.0 from which the optimisation cannot escape.
* Speedup of the PCS component of the rigid frame order model. The lanthanide to atom vectors are now being calculated outside of the alignment tensor and spin loops, as well as the inverse vector lengths to the 5<sup>th</sup> power. This increases the speed by a factor of 1.216 (from 38.133 to 31.368 seconds for 23329 calls of the [http://www.nmr-relax.com/api/4.0/target_functions.frame_order.Frame_order-class.html#func_rigid func_rigid() target function]).
* Added the full optimisation results for the rigid frame order model. This is for the CaM test data using the new frame_order.py optimisation script.
* Numpy ≤ 1.6 fixes for the frame order PCS code. The numpy.linalg.norm function does not have an axis argument in numpy 1.6, therefore the [http://www.nmr-relax.com/api/4.0/lib.compat-module.html#norm lib.compat.norm() function ] is now used instead. This function was created exactly for this axis argument problem.* Created the new [http://www.nmr-relax.com/api/4.0/lib.frame_order.variables-module.html specific_analyses.frame_order.variables module]. This currently contains variables for all of the frame order model names, as well as various lists of these models. The rest of the frame order specific analysis code as well as the frame order user functions have been converted to use these model variables exclusively rather than having the model name strings hardcoded throughout the codebase.
* Added the full optimisation results for the double rotor test data. This is for the CaM frame order test data using the new frame_order.py optimisation script.
* 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 θ<sup>max</sup> 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 θ<sup>max</sup> 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.
* Created the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks-module.html#check_pivot_func specific_analyses.frame_order.checks.check_pivot() function]. This is to check that the pivot point has been set.
* The frame order grid search is now checking if the pivot point has been set.
* Added a profiling script and log file for the free rotor frame order model.
* Modified the script for recreating the frame order PDB representation and displaying it in PyMOL. The state loading, domain redefinition, and representation creation parts have all been removed, as these will soon all be redundant as the frame order analysis for all models is being redone. All that remains are the pymol.frame_order() function calls for displaying all the representations.
* The pivot point parameters in the frame order analysis are no longer scaled by 100. This is to match the average domain position translation which is also not scaled.
* The [http://www.nmr-relax.com/api/4.0/lib.frame_order.variables-module.html specific_analyses.frame_order.variables module ] is now used throughout the frame order code. The target function code, auto-analysis, and test suite now all use the variables defined in this module rather than having hardcoded strings. The [http://www.nmr-relax.com/api/4.0/lib.frame_order.variables-module.html#MODEL_LIST_NONREDUNDANT MODEL_LIST_NONREDUNDANT variable ] has been created to exclude the redundant free rotor pseudo-ellipse which cannot be optimised, and this is used by the auto-analysis.
* Removal of many unused imports in the frame_order_cleanup branch. These were detected using the devel_scripts/find_unused_imports.py script which uses pylint to find all unused imports. The false positives also present in the trunk were ignored. And the unused imports in the dispersion code were also left for clean up the disp_spin_speed branch.
* Changed the minimisation in the frame order system tests where optimisation is activated. The number of iterations is now set to 1 for speed testing, and the constraints are turned on.
* 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 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.* Parallelised the frame order grid search to run on clusters or multi-core systems via OpenMPI. This involved the creation of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation.Frame_order_grid_command -class .html Frame_order_grid_command class] which is the [http://www.nmr-relax.com/api/4.0/multi.slave_commands.Slave_command-class.html multi-processor Slave_command ] for performing the grid search. This was created by duplicating the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation.Frame_order_minimise_command-class.html Frame_order_minimise_command class ] and then differentiating both classes. For the subdivision of the grid search, the new minfx grid.grid_split_array() function is used in the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.api.Frame_order-class.html#grid_search frame order grid() API method]. The grid() method no longer calls the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.api.Frame_order-class.html#minimise minimise() method ] but instead obtains the processor box itself and adds the subdivided grid slaves to the processor. The relax [http://www.nmr-relax.com/manual/grid_search.html grid_search user function] takes care of the rest.* Fixes for the parallelised grid search for the frame order analysis. A chi-squared value check was added to the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation.Frame_order_result_command-class.html#run Frame_order_result_command.run() method ] to check if the value is lower than the current when the result is returned to the master. Without this check, each grid subdivision result will be stored as they are returned rather than storing the results from the global minimum of the entire grid search.
* Added a script for testing out the parameter nesting abilities of the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This script attempts to find the dynamics solution without knowing where the pivot is located. Hence this will be as in the auto-analysis were this pivot point will be used as the base for all other models.
* 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.
* Updated the frame order optimisation results for the 2<sup>nd</sup> CaM pseudo-elliptic cone 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.
* Some more fixes for the optimisation user function changes.
* Removed the parameter scaling for the pivot point frame order parameters. These were already removed from the frame_order_cleanup branch in the [http://www.nmr-relax.com/api/4.0/pipe_control.minimise-module.html#assemble_scaling_matrix assemble_scaling_matrix() function], however they were reintroduced accidentally via the parameter object where this information is now defined. So this removes the scaling a second time.
* Fixes for the parameter scaling changes in the trunk. The scaling flag is no longer part of the specific analysis API optimisation methods. Instead the pre-assembled scaling matrices are passed into all three API optimisation methods.
* Implemented the frame order specific analysis API method print_model_title(). This is simply aliased from the [http://www.nmr-relax.com/api/4.0/specific_analyses.api_common.API_common-class.html#_print_model_title_global API common method _print_model_title_global()].
* Fix for the grid search in the frame order analysis. This is a recently introduced problem due to the changes of the zooming_grid_search branch.
* Turned on the optimisation in 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_rigid system test]. This is to catch a number of failures in the frame order grid search.
* Activated the grid search in the frame order system tests using the CaM synthetic data. This is set to one increment so that the tests can complete in a reasonable time.
* Fix for the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.optimisation-module.html#grid_row specific_analyses.frame_order.optimisation.grid_row() function]. This can now handle the case of a single grid increment. The change is similar to r163 in the minfx project ([https://mail.gna.org/public/minfx-commits/2014-07/msg00015.html)r163 in the minfx project].
* Converted the frame_order_free_start.py script to use the zooming grid search.
* Added lots of calls to the [http://www.nmr-relax.com/manual/time.html time user function] to the frame_order_free_start.py. This will be used to fine tune the frame order analysis on a cluster.
* Updated the frame order optimisation results for the 2<sup>nd</sup> CaM 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.
* Fixes for the CaM free-rotor pseudo-ellipse frame order model test data set. This is for the constraint 0 ≤ θ<sub>x</sub> ≤ θ<sub>y</sub> ≤ π, as the old data was created with θ<sub>x</sub> > θ<sub>y</sub>. The new data is also of high quality using 20 million structures and numpy.float128 data averaging.
* Created the [http://www.nmr-relax.com/api/4.0/lib.frame_order.conversions-module.html#convert_axis_alpha_to_spherical lib.frame_order.rotor_axis.convert_axis_alpha_to_spherical() function]. This will convert the axis α angle to the equivalent spherical angles θ and φ.* Renamed the [http://www.nmr-relax.com/api/4.0/lib.frame_order.conversions-module.html lib.frame_order.rotor_axis module to lib.frame_order.conversions]. This module will be used for all sorts of frame order parameter conversions.
* Added the pipe_name argument to 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 allows the pivot from data pipes other than the current one to be assembled and returned.
* Updated the frame order optimisation results for the CaM free rotor, pseudo-ellipse 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.
* Updated the frame order optimisation results for the CaM torsionless, pseudo-ellipse 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.
* Fix for 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 Frame_order.test_cam_pseudo_ellipse_free_rotor system test]. This is for the change of the X and Y cone opening angles.
* Redesign and expansion of the nested model parameter copying in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. The nested parameter protocol used to allow the analysis to complete in under 1,000,000 years was no longer functional due to the switching to the axis α parameter to decrease parameter number and redundancy. The copying of the average domain position for the free rotor models was also incorrect as the dropping of the α Euler angle cause the translation parameters and β and γ angles to change drastically. The new protocol has been split into four methods for the average domain position, the pivot point, the motional eigenframe and the parameters of ordering. These use the fact that the free rotor and torsionless models are the two extrema of the models where the torsion angle is restricted. The pivot copying is a new addition.
* Created 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 will be an extremely quick run through of the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] as this is not currently tested. 1 Sobol' quasi-random integration point will be used for all models for speed. The system test uses the rigid CaM test data to perform a full analysis.* Alphabetical ordering of the imports in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis module].* Fixes for the backend script 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 includes a missing import and the removal of a long ago deleted user function.
* Fix for the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] for the call to the grid search user function. This user function has been renamed to [http://www.nmr-relax.com/manual/minimise_grid_search.html minimise.grid_search], however not all parts of the analysis had been converted to the new name.
* Created a method in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] to reorder the models. This is needed as the nested model parameter copying protocol requires the simpler models to be optimised first.
* 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 calculate() and 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 α 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 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 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 add_grid() and add_min() methods to allow the user to add successive iterations of optimisation and settings to the object. The loop_grid() and loop_min() methods are used to loop over each iteration of each method. And the get_grid_inc(), get_grid_num_int_pts(), get_grid_zoom_level(), get_min_algor(), get_min_func_tol() and 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] Optimisation_settings object now handles the maximum iterations. The new max_iter argument has been added to the add_min() method, and the new 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 Optimisation_settings object and for the changes of this branch.
* Removed the RDC data checks from the frame order optimisation. This is in the minimise_setup_rdcs() and store_bc_data() functions of the 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 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 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.
* Created set of files for the axis permutation of the torsionless isotopic cone frame order model.
* Created an initial 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 specific_analyses.frame_order.data.pivot_fixed() function using the 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 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 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 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 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.
* 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 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 Frame_order system tests.
* Created the very simple 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.
* 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 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 auto-analysis Optimisation_settings object design.
* Updated the 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 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.
* 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 χ<sup>2</sup> value checks were updated. These were validated by increasing the number of integration points and watching the χ<sup>2</sup> value of the Frame_order.test_cam_*_pcs version of the system tests head to zero.
* Another update for the χ<sup>2</sup> check in the Frame_order.test_rigid_data_to_free_rotor_model system test. The previous commit used an incorrect value for the χ<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 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 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 lib.structure.geometric.generate_vector_residues() function later on anyway. The change is to simplify the printouts.
* Improvements for the 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 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.
* Updated the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis] to call the new [http://www.nmr-relax.com/manual/frame_order_simulate.html frame_order.simulate user function]. Although not implemented yet, this allows the user function to create the simulation PDB file in the future.
* 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 create_ave_pos() of the specific_analyses.frame_order.geometric module has been shifted into the new 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 average_position() function of the specific_analyses.frame_order.geometric module.
* Fix for the new 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 specific_analyses.frame_order modules import from 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 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.
* 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 summarise() function which will generate a results summary table as the analysis is still running.
* Improved logic in the 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 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 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 auto_analyses.frame_order.Frame_order_analysis class which when False will cause the state saving step to be skipped.
* The 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 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 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 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 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 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 intermediate results are no longer stored 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 drops the test timing on one system from ~190 seconds to ~50 seconds.
* 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.
* 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.
* 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]. After the introduction of the [http://www.nmr-relax.com/manual/frame_order_distribute.html frame_order.distribute user function] into the auto-analysis, the test was taking far too long to complete. Now the distribution arguments are set to low values to allow the test to pass in under a minute.
* Changed the default relax results compression type to bzip2 in the [http://www.nmr-relax.com/api/4.0/auto_analyses.frame_order-module.html frame order auto-analysis]. This was set to no compression for speeding up some system tests, however the system tests can set this for themselves.
* 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 sets the results file compression type to bzip2.
* Changed the default max_rotations argument value to 100,000 in the [http://www.nmr-relax.com/manual/frame_order_distribute.html frame_order.distribute user function]. This decrease from one million is so the user function completes in a reasonable amount of time.
* The [http://www.nmr-relax.com/manual/frame_order_distribute.html frame_order.distribute user function] now warns when the maximum rotations are reached.
* 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 count_sobol_points() function of the 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 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 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 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.