* 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.
* 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.
* 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 [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 ≤ 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<y<z, x<z<y, z<x<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<y<z, x<z<y, and z<x<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 θ<sub>x</sub> or θ<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 φ 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 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 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 specific_analyses.frame_order.optimisation.count_sobol_points() function.
* 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 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 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.
* 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 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 [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.
* Changed the χ<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 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 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 get_grid_quad_int() and 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 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 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 [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 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.
* 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 structure.load_spins user function changes. The 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 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.
* 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.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 [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html#create_ave_pos create_ave_pos() function ] of the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.geometric-module.html specific_analyses.frame_order.geometric module ] now checks that cdp.structure exists, and if not a warning is given and the PDB file creating is skipped.
* Fixes for the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] backend for when no data is present. The pipe_centre_of_mass() function of pipe_control.structure.mass module is now called with the missing_error flag set to False so that the PDB generation can continue with the CoM set to [0, 0, 0].
* The geometric representation part of the [http://www.nmr-relax.com/manual/frame_order_pdb_model.html frame_order.pdb_model user function] now checks parameters. This calls the [http://www.nmr-relax.com/api/4.0/specific_analyses.frame_order.checks-module.html#check_parameters specific_analyses.frame_order.checks.check_parameters Check object ] to make sure that all necessary parameters for the model exist.
* Completed the Frame_order.test_pdb_model_rotor system test. This now sets the rotor axis to the z-axis (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 coordinates.
* Fixes for the unit tests of the lib.frame_order_matrix_ops module for the free rotor isotropic cone. The S1 order parameter has been eliminated due to angles > π/2.0 causing the frame order matrix to be incorrectly predicted. Therefore all unit tests have been converted to use the cone opening angle θ instead. In addition, the test_compile_2nd_matrix_iso_cone_free_rotor_disorder had been modified to pass with the incorrect frame order matrix by comparing to the half cone frame order matrix rather than the identity frame order matrix.
* 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 Frame_order.test_simulate_double_rotor_mode1_z_axis and Frame_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 Frame_order.test_simulate_double_rotor_mode1_xz_plane_tilt and Frame_order.test_simulate_double_rotor_mode2_xz_plane_tilt.
* 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 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 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.