<section begin=features/>
* Implementation of the [http://www.nmr-relax.com/manual/rdc_copy.html rdc.copy] and [http://www.nmr-relax.com/manual/pcs_copy.html pcs.copy] user functions.
* Improved printouts from the [http://www.nmr-relax.com/manual/model_selection.html model_selection], [http://www.nmr-relax.com/manual/pipe_display.html pipe.display], [http://www.nmr-relax.com/manual/rdc_read.html rdc.read] user functions.
* Implemented the [http://www.nmr-relax.com/manual/interatom_copy.html interatomic.copy] and [http://www.nmr-relax.com/manual/interatom_defineinteratom_create.html [interatomic.create] user functions.
* Added the 'units' argument to the [http://www.nmr-relax.com/manual/spectrometer_frequency.html frq.set user function] to allow values other than Hz to be input.
* Added the 'empty' flag to the [http://www.nmr-relax.com/manual/sequence_copy.html sequence.copy user function] to allow all the spin contents to be copied.
* Added the MARC archive links to the development chapter of the relax user manual. These links are: http://marc.info/?l=relax-announce&r=1&w=2, http://marc.info/?l=relax-users&r=1&w=2, http://marc.info/?l=relax-devel&r=1&w=2, and http://marc.info/?l=relax-commits&r=1&w=2.
* The model-free overfit deselection algorithm now fails with a RelaxError when no spins are selected. This is to avoid situations such as [https://gna.org/bugs/?20277 bug #20277].
* The [http://www.nmr-relax.com/manual/pipe_display.html pipe.display user function ] now uses relax_io.write_data() for better output formatting.* Created the N_state_model.test_data_copying system test for the [http://www.nmr-relax.com/manual/rdc_copy.html rdc.copy ] and [http://www.nmr-relax.com/manual/pcs_copy.html pcs.copy ] user functions. These user functions do not exist yet, but this test will be used to implement them.* Reactivated the [http://www.nmr-relax.com/manual/rdc_copy.html rdc.copy ] and [http://www.nmr-relax.com/manual/pcs_copy.html pcs.copy ] user function front-ends. The backends are missing, so relax is currently broken.* Created the RelaxNoAlignError error class for use by [http://www.nmr-relax.com/manual/rdc_copy.html rdc.copy ] and [http://www.nmr-relax.com/manual/pcs_copy.html pcs.copy].* Created the RelaxAlignError error class for use by the [http://www.nmr-relax.com/manual/rdc_copy.html rdc.copy ] and [http://www.nmr-relax.com/manual/pcs_copy.html pcs.copy ] user functions.* Implemented the [http://www.nmr-relax.com/manual/rdc_copy.html rdc.copy ] and [http://www.nmr-relax.com/manual/pcs_copy.html pcs.copy ] user function backends. This code is copied from the relax_data.copy user function and has been tailored to the different data types.* Modified the RDC and PCS data copying system test script to check overwriting. The [http://www.nmr-relax.com/manual/rdc_copy.html rdc.copy ] and [http://www.nmr-relax.com/manual/pcs_copy.html pcs.copy ] user function should support the overwriting of existent values.* The [http://www.nmr-relax.com/manual/rdc_copy.html rdc.copy ] and [http://www.nmr-relax.com/manual/pcs_copy.html pcs.copy ] user functions now support overwriting pre-existing data.
* Removed some debugging printouts.
* The N_state_model.test_data_copying system test now checks the spin RDC and PCS data.
* The [http://www.nmr-relax.com/manual/model_selection.html model_selection user function ] is now using relax_io.write_data() for its printouts. This allows for clean formatting when data pipes have long names.* The [http://www.nmr-relax.com/manual/rdc_write.html rdc.write ] and [http://www.nmr-relax.com/manual/pcs_write.html pcs.write ] user functions now skip deselected spins.
* The axis for PDB geometric cone can now be turned off in the create_cone_pdb() function. The axis_flag keyword argument is now accepted and if False will cause the axis to be excluded. This is useful for the frame order cones for example as its own {x,y,z}-axis system is created.
* Many docstring fixes for the functions of the generic_fns.structure.geometric module.
* Created the N_state_model.test_absolute_rdc_menthol system test to demonstrate a pseudo-atom failure. This is a test of the long range, absolute RDCs for menthol.
* Added a check for the second Q factor in the N_state_model.test_absolute_rdc_menthol system test.
* Modified the N_state_model.test_populations system test to catch [https://gna.org/bugs/?20335 bug #20335]. This simply adds calls to the [http://www.nmr-relax.com/manual/rdc_delete.html rdc.delete ] and [http://www.nmr-relax.com/manual/pcs_delete.html pcs.delete ] user functions, and then reloads the RDC and PCS data.* Modified the [http://www.nmr-relax.com/manual/temperature.html temperature user function ] - the value can be set twice if it is the same value.* Modified the [http://www.nmr-relax.com/manual/frq_set.html frq.set user function ] - the value can be set twice if it is the same value.* The [http://www.nmr-relax.com/manual/rdc.back_calc.html rdc.back_calc user function ] now handles absolute RDCs.
* Created the Align_tensor.test_copy system test to catch [https://gna.org/bugs/?20338 bug #20338].
* The [http://www.nmr-relax.com/manual/spin_create_pseudo.html spin.create_pseudo user function ] 'members' argument is no longer read only in the GUI. This allows the user to type in shorter spin IDs rather than selecting them from the list.
* Shifted and renamed the arg_check.check_float() function to check_types.is_float().
* The relax_io.write_spin_data() function now formats floating point numbers better. This affects the printouts of many data loading user functions.
* Better printouts from the [http://www.nmr-relax.com/manual/rdc_read.html rdc.read user function ] - the numbers are now formatted.* Created the [http://www.nmr-relax.com/manual/interatomic_copy.html interatomic.copy ] and [http://www.nmr-relax.com/manual/interatomic_create.html interatomic.create ] user functions. This is simply new front ends for the user for the functions of generic_fns.interatomic.
* The generic_fns.interatomic.copy() function now accepts spin IDs as arguments to partially copy the data.
* Expanded the RelaxNoSpinError class to accept the data pipe name for the error printout.
* Created the Interatomic.test_copy system test to check the [http://www.nmr-relax.com/manual/interatomic_copy.html interatomic.copy user function].* Expanded the Interatomic.test_copy system test to check [http://www.nmr-relax.com/manual/interatomic_copy.html interatomic.copy ] without spin IDs.
* Added a test for the presence of target sequence data in generic_fns.interatomic.copy().
* Spun out code from generic_fns.pipes.create() into the new check_type() function. This code will be reused in a new pipe user function.
* Created the Pipes.test_change_type system test to check the non-existent [http://www.nmr-relax.com/manual/pipe_change_type.html pipe.change_type user function].* Implemented the [http://www.nmr-relax.com/manual/pipe_change_type.html pipe.change_type user function ] front and back ends.
* Created the Align_tensor.test_fix() system test to check the operation of align_tensor.fix.
* Created some synthetic paramagnetically aligned RDC and PCS data to the test suite. This will be used in later system tests.
* Created the N_state_model.test_paramag_align_fit system test to check the paramagnetic data. This test check the alignment tensor optimisation of the RDC and PCS data in test_suite/shared_data/align_data/paramagnetic/, loading both alignment data sets but only optimising one tensor.
* The RelaxErrors when calling user functions in the prompt/script interface are now more informative. The user function is now stated. This is to better help the user work out where the problem is.
* Created the Rdc.test_rdc_copy system test to demonstrate the failure of the [http://www.nmr-relax.com/manual/rdc_copy.html rdc.copy user function].
* Created the Pcs.test_pcs_load and Pcs.test_pcs_copy system tests to check some of the PCS user functions. The Pcs system test class is new, and these tests check untested areas of relax.
* Created RelaxInteratomInconsistentError for when the data is inconsistent between two data pipes.
* Created the generic_fns.interatomic.consistent_interatomic_data() function for checking data consistency.
* The [http://www.nmr-relax.com/manual/rdc_copy.html rdc.copy user function ] now uses the new consistent_interatomic_data() function prior to copying. To copy the RDC data, the interatomic data containers must be identical between the two data pipes.
* Fix for the N_state_model.test_data_copying system test. The interatomic data is now copied prior to copying the RDC data.
* Created 4 unit tests to demonstrate the failure of the selection object with spin IDs.
* The molecule, residue and spin selection object now works with spin IDs.
* Docstring consistency editing for all parts of the generic_fns.mol_res_spin module.
* Created the Selection system test class. This currently has the test Selection.test_deselect_all for checking the [http://www.nmr-relax.com/manual/deselect_all.html deselect.all user function]. The number of tests will be expanded in the future to cover interatomic data containers and the operation of all the select and deselect user functions.
* Shifted the boolean selection operations of the generic_fns.selection module into two new functions. These are the boolean_select() and boolean_deselect() functions. The change removes much duplicated code which could be a source of bugs in the future.
* The [http://www.nmr-relax.com/manual/frq_set.html frq.set user function ] now warns if the frequency is lower than 100 MHz or higher than 2 GHz.
* Updated the diffusion tensor minimisation sample script as the code is very old and useless.
* Created the State.test_align_tensor_with_mc_sims system test to catch [http://gna.org/bugs/?20414 bug #20414].
* Added a second data pipe with data to the 'align_tensor_mc.bz2' saved state to catch a bug. This bug was recently introduced.
* Added checks for the RDC data in the State.test_align_tensor_with_mc_sims system test. This is to be sure that the data is properly converted from the old design.
* Added the 'empty' flag to the [http://www.nmr-relax.com/manual/sequence_copy.html sequence.copy user function ] to allow all the spin contents to be copied. The user function was only copying the basic empty molecule, residue and spin containers, in contrast to the [http://www.nmr-relax.com/manual/interatomic_copy.html interatomic.copy user function ] which copies all of the container contents as well. This new flag is for backwards compatibility - it allows old scripts to operate as before while enabling the new functionality.* Removed the check for the 3D structural data in the [http://www.nmr-relax.com/manual/paramag_centre.html paramag.centre user function]. This check is not needed.* Created the Pcs.test_structural_noise system test for the new [http://www.nmr-relax.com/manual/pcs_structural_noise.html pcs.structural_noise user function].
* Created the N_state_model.test_mc_sim_failure system test to demonstrate a bug in the N-state model. This appears to be a problem with Monte Carlo simulations when data is missing.
* Modified the N_state_model.test_mc_sim_failure system test to include missing PCS data. This is to catch another bug.
* Modified all generic_fns.mol_res_spin.get_*() functions to handle no data pipes being present. These functions were previously raising RelaxErrors as no pipes were present. They now return empty lists instead. This allows many of the GUI user functions to open in the GUI when no data is present, allowing better debugging and less confusion for the user.
* The Pipes.test_change_type system test is skipped if the required scipy module is not installed.
* Python 3 fix for the new [http://www.nmr-relax.com/manual/pcs_structural_noise.html pcs.structural_noise user function]. There was a string/unicode problem in the Grace plot creation code.
* Created the Pcs.test_load_multi_col_data system test to demonstrate a failure of PCS data loading. This is a problem when <sup>15</sup>N data is in one column and <sup>1</sup>H data is in another, and the spin_id argument is used to specify which is which.
* Added some printouts to the Pcs.test_load_multi_col_data system test.
* Created the Pcs.test_grace_plot system test to check the [http://www.nmr-relax.com/manual/pcs_corr_plot.html pcs.corr_plot user function].
* Created the Pcs.test_load_multi_col_data2 system test to catch a bug with the molecule name. This is the same as the Pcs.test_load_multi_col_data system test but the spins have the molecule name set.
* Created the Mol_res_spin.test_prune_metadata system test to catch a bug in the spin ID lookup table. Spin IDs appear not to be correctly removed from the lookup table.
* Added Monte Carlo simulations to the N_state_model.test_paramag_centre_fit system test. This is to better test the code paths.
* Modified the N_state_model.test_mc_sim_failure to demonstrate a failure in paramagnetic centre code. The failure is for the combination of paramagnetic centre optimisation and Monte Carlo simulations.
* Modified the [http://www.nmr-relax.com/manual/paramag_centre.html paramag.centre user function ] printouts for the 'fix' flag.
* The alignment tensor objects in the relax data store now support sequential Monte Carlo analyses. The AlignTensorData.set_sim_num() method was preventing a second Monte Carlo error analysis from being performed by throwing a RelaxError. The check for previous simulations has been killed.
* Added checks to the N-state model for the paramagnetic centre optimisation. Only simplex optimisation without constraints is allowed for the paramagnetic centre position as the PCS gradients and Hessians are not yet implemented for the coordinate parameters.
* Fixes for the N-state model return_data() method.
* Modified the RelaxNoRDCError and RelaxNoPCSError to accept no alignment ID. This is then used to indicate the complete absence of data.
* Modified the initial testing of the [http://www.nmr-relax.com/manual/rdc_set_errors.html rdc.set_errors ] and [http://www.nmr-relax.com/manual/pcs_set_errors.html pcs.set_errors ] user functions. This is to better indicate to the user what the problem is and why the user function cannot operate.
* Fixes for the align_fit.py N-state model system test script. The recently introduced Monte Carlo simulations and associated RDC and PCS error setting was failing when RDC or PCS data was missing. The script now checks the mode of operation and only sets errors if the corresponding data is present.
* The N_state_model.test_align_fit system test now checks the simulation PCS values.
* Work around for a numpy bug triggered by scons and the import of Scientific.Visualization.VMD. For details, see the thread started by Jack Howarth (howarth att bromo dot med dot uc dot edu) started at http://thread.gmane.org/gmane.science.nmr.relax.devel/3663 (Message ID:<20121019140023.GA26861@bromo.med.uc.edu>).
* Fix for a fatal bug in the multi-processor code (https://gna.org/bugs/?20253). The Queue module is now imported as 'queue' for Python 3 support, so the code was referring to the wrong object name.
* Bugfix for the [http://www.nmr-relax.com/manual/grid_search.html grid_search user function]. The elements of the list of integers can be None to indicate that no grid search in that dimension is to be performed.* Fix for model elimination in the modsel.py model-free sample script. The [http://www.nmr-relax.com/manual/eliminate.html eliminate user function ] should be applied to each data pipe separately.
* Fix for the relax_io.write_data() function - it can now handle no data being sent in.
* Bugfix for the use of pseudo-atoms for RDCs in the N-state model analysis. If the second atom of the pair in the intermolecular data container holding the RDC data was a pseudo-atom, then the N-state model optimisation setup would fail. Now both the first and second atoms being pseudo-atoms is supported.
* Fix for [https://gna.org/bugs/?20338 bug #20338], the new tensor name is now set.
* Bugfix for the catching of errors in the GUI user functions - the sys module import was missing.
* Bugfix for the GUI combo_list input element SetValue() method. Values not belonging to the combo lists can now be set. This fixes the [http://www.nmr-relax.com/manual/spin_create_pseudo.html spin.create_pseudo user function ] in the test suite, a bug triggered by the N_state_model.test_absolute_rdc_menthol GUI test.* Fixes for the [http://www.nmr-relax.com/manual/align_tensor_copy.html align_tensor.copy user function ] for when the tensor_to argument is not supplied. Now it is assumed that the new tensor will have the same name as the old. The new tensor is also properly initialised.
* Bugfix for the N-state model with PCSs and the temperature or spectrometer frequency are not set. Previously the missing value was set to 0 K or 1e-10 Hz, but this was causing optimisation to fail. Now a RelaxError is produced if the value is missing and optimisation is attempted.
* Fixes for the calculation of RDC and PCS Q factors for when fixed alignment tensors are present. If a tensor is fixed, then there will be no back-calculated data. Therefore instead of returning from the function, a continue statement is used to skip just that alignment.
* Bugfix for the RelaxNoAlignError error class - the printout statement was broken.
* Bugfix for the [http://www.nmr-relax.com/manual/rdc_copy.html rdc.copy user function ] - it is now functional. The code was old and untested, and still assumed that the RDC values were held in spin containers rather than the interatomic data containers.
* Partial fix for [https://gna.org/bugs/?20378 bug #20378]. The gui_raise() function was operating differently under the command line run test suite and the GUI run test suite. The operation of the function is now consistent, and no RelaxError is raised (unless the raise_flag argument is set).
* Full fix for [https://gna.org/bugs/?20378 bug #20378]. As no RelaxError is no longer raised in this Bruker.test_bug_20152_read_dc_file GUI test (well only in the command line operation of the GUI tests), instead the current data pipe is checked to make sure no relaxation data was loaded.