Difference between revisions of "Relax 3.3.5"

From relax wiki
Jump to navigation Jump to search
(→‎CHANGES file: Updated the metadata from the CHANGES file.)
m (Switch to the {{gna task link}} template to remove dead Gna! links.)
 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
{{lowercase title}}
 
{{lowercase title}}
  
= Description =
+
{{infobox relax release
 +
| version = 3.3.5
 +
| prev    = 3.3.4
 +
| next    = 3.3.6
 +
| type    = Major feature and bugfix
 +
| date    = 27 January 2015
 +
| manual  = yes
 +
}}
 +
 
 +
== Description ==
  
 
<section begin=description/>
 
<section begin=description/>
This is a major feature and bugfix release.  It fixes an important bug in the Monte Carlo simulation error analysis in the relaxation dispersion analysis.  Features include improvements to the NMR spectral noise error analysis, expansion of the grace.write user function to handle both first and last point normalisation for reasonable R1 curves in saturation recovery experiments, the implementation of Needleman-Wunsch pairwise sequence alignment algorithm using the BLOSUM62, PAM250 and NUC 4.4 substitution matrices for more advanced 3D structural alignments via the structure.align and structure.superimpose user functions as well as any of the other structure user functions dealing with multiple molecules, expansion of the structure.rmsd user function to allow the RMSD to be calculated between different molecules rather than just models, expansion of the structure.find_pivot user function to allow it to operate on different molecules, conversion of the structure.displacement, structure.rmsd, structure.superimpose and structure.web_of_motion user functions to a new pipes/models/molecules/atom_id design to allow the user functions to operate on different data pipes, different structural models and different molecules, addition of the displace_id argument to the structure.align and structure.superimpose user functions to allow finer control over which atoms are translated and rotated by the algorithm, large improvement for the PDB molecule identification code affecting the structure.read_pdb user function, creation of the lib.plotting package for assembling all of the data plotting capabilities of relax, implementation of the new structure.atomic_fluctuations user function for creating text output or Gnuplot graphs of the correlation matrix of interatomic distance, angle or parallax shift fluctuations, the implementation of ordinary least squares fitting, and improvements for the pcs.corr_plot and rdc.corr_plot user functions.
+
This is a major feature and bugfix release.  It fixes an important bug in the Monte Carlo simulation error analysis in the relaxation dispersion analysis.  Features include improvements to the NMR spectral noise error analysis, expansion of the [http://www.nmr-relax.com/manual/grace_write.html grace.write user function] to handle both first and last point normalisation for reasonable R<sub>1</sub> curves in saturation recovery experiments, the implementation of Needleman-Wunsch pairwise sequence alignment algorithm using the BLOSUM62, PAM250 and NUC 4.4 substitution matrices for more advanced 3D structural alignments via the [http://www.nmr-relax.com/manual/structure_align.html structure.align] and [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] user functions as well as any of the other structure user functions dealing with multiple molecules, conversion of the [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement], [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot], [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd], [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] and [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion] user functions to a new pipes/models/molecules/atom_id design to allow the user functions to operate on different data pipes, different structural models and different molecules, addition of the displace_id argument to the [http://www.nmr-relax.com/manual/structure_align.html structure.align] and [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] user functions to allow finer control over which atoms are translated and rotated by the algorithm, large improvement for the PDB molecule identification code affecting the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function], creation of the [http://www.nmr-relax.com/api/3.3/lib.plotting-module.html lib.plotting package] for assembling all of the data plotting capabilities of relax, implementation of the new [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function] for creating text output or Gnuplot graphs of the correlation matrix of interatomic distance, angle or parallax shift fluctuations, the implementation of ordinary least squares fitting, and improvements for the [http://www.nmr-relax.com/manual/pcs_corr_plot.html pcs.corr_plot] and [http://www.nmr-relax.com/manual/rdc_corr_plot.html rdc.corr_plot] user functions.  Many more features and bugfixes are listed below.
 
<section end=description/>
 
<section end=description/>
  
= Download =
+
== Download ==
  
 
<section begin=download/>
 
<section begin=download/>
Line 13: Line 22:
 
<section end=download/>
 
<section end=download/>
  
= CHANGES file =
+
== CHANGES file ==
  
 
<section begin=metadata/>
 
<section begin=metadata/>
Line 21: Line 30:
 
<section end=metadata/>
 
<section end=metadata/>
  
== Features ==
+
=== Features ===
  
 
<section begin=features/>
 
<section begin=features/>
 +
* Improvements to the NMR spectral noise error analysis.
 +
* Addition of the new [http://www.nmr-relax.com/manual/spectrum_error_analysis_per_field.html spectrum.error_analysis_per_field user function] to quickly perform a per-NMR field spectrum error analysis.
 +
* Added [http://www.nmr-relax.com/manual/spectrum_sn_ratio.html spectrum.sn_ratio user function] to calculate the signal to noise ration for all spins, and introduced the per-spin sn_ratio parameter for the NOE, relaxation curve-fitting and relaxation dispersion analyses.
 +
* Added the new [http://www.nmr-relax.com/manual/select_sn_ratio.html select.sn_ratio] and [http://www.nmr-relax.com/manual/deselect_sn_ratio.html deselect.sn_ratio] user functions to change the selection status of spins according to their signal to noise ratio.
 +
* Expansion of the [http://www.nmr-relax.com/manual/grace_write.html grace.write user function] to handle both first and last point normalisation for reasonable R<sub>1</sub> curves in saturation recovery experiments.
 +
* Conversion of the [http://www.nmr-relax.com/manual/structure_align.html structure.align], [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement], [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot], [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd], [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] and [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion] user functions to a standardised pipes/models/molecules/atom_id argument design to allow the user functions to operate on different data pipes, different structural models and different molecules simultaneously and to restrict operation to a subset of all spins.  This is also used by the new [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].
 +
* Addition of the displace_id argument to the [http://www.nmr-relax.com/manual/structure_align.html structure.align] and [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] user functions to allow finer control over which atoms are translated and rotated by the algorithm independently of the align_id atom ID for selecting atoms used in the superimposition.
 +
* Large improvement for the PDB molecule identification code affecting the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function] allowing discontinuous ATOM and HETATM records with the same chain ID to be loaded as the same molecule.
 +
* Creation of the [http://www.nmr-relax.com/api/3.3/lib.plotting-module.html lib.plotting package] for assembling all of the data plotting capabilities of relax into a unified software independent API.
 +
* Implementation of the new [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function] for creating text output or Gnuplot graphs of the correlation matrix of interatomic distance, angle or parallax shift fluctuations, measured as sample standard deviations, between different molecules.
 +
* The implementation of ordinary least squares fitting.
 +
* Improvements for the [http://www.nmr-relax.com/manual/pcs_corr_plot.html pcs.corr_plot] and [http://www.nmr-relax.com/manual/rdc_corr_plot.html rdc.corr_plot] user functions.
 +
* The implementation of Needleman-Wunsch pairwise sequence alignment algorithm using the BLOSUM62, PAM250 and NUC 4.4 substitution matrices for more advanced 3D structural alignments via the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  The Needleman-Wunsch algorithm is implemented as in the EMBOSS software to allow for gap opening and extension penalties as well as end penalties.  This is also used in all the other structure user functions dealing with multiple molecules - [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations], [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement], [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot], [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd], [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose], [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion].
 +
* Improved support for PDB secondary structure metadata for the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb] and [http://www.nmr-relax.com/manual/structure_write_pdb.html structure.write_pdb] user functions.
 
<section end=features/>
 
<section end=features/>
  
== Changes ==
+
=== Changes ===
  
 
<section begin=changes/>
 
<section begin=changes/>
 +
* Added a sentence to the start of the citation chapter about http://www.nmr-relax.com links.  This is to convince people to more freely use this URL.  In that way, the relax search engine ranking should be significantly increased.  And it will be easier for new users to get into relax.
 +
* Removing the automatic function for error analysis per field in the relaxation dispersion auto-analysis.  This function is moved into [http://www.nmr-relax.com/api/3.3/pipe_control.spectrum-module.html pipe_control/spectrum.py].
 +
* Added the function [http://www.nmr-relax.com/api/3.3/pipe_control.spectrum-module.html#error_analysis_per_field pipe_control.spectrum.error_analysis_per_field()], as an automatic way of submitting subset IDs per field for error analysis.
 +
* For the [http://www.nmr-relax.com/api/3.3/pipe_control.spectrum-module.html#error_analysis_per_field pipe_control.spectrum.error_analysis_per_field()], added additional printout of subset IDs used for error analysis.
 +
* In the [http://www.nmr-relax.com/api/3.3/auto_analyses.relax_disp-module.html auto_analysis.relax_disp module], used the new [http://www.nmr-relax.com/manual/spectrum_error_analysis_per_field.html spectrum.error_analysis_per_field user function] to calculate the peak intensity errors.
 +
* Reinserted the [http://www.nmr-relax.com/api/3.3/auto_analyses.relax_disp.Relax_disp-class.html#error_analysis error_analysis() function] in the auto class of relaxation dispersion.  This function only checks if the error analysis has not been be performed before, and then decides to call the [http://www.nmr-relax.com/manual/spectrum_error_analysis_per_field.html spectrum.error_analysis_per_field user function].  The implementation can be tested with the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_disp.Relax_disp-class.html#test_estimate_r2eff_err_auto Relax_disp.test_estimate_r2eff_err_auto system test].
 +
* In [http://www.nmr-relax.com/api/3.3/pipe_control.spectrum-module.html#error_analysis_per_field pipe_control.spectrum.error_analysis_per_field()] removed the checks which would stop the calculation of the errors.  This function will now always run, which will make it possible for the user to try different error calculations.
 +
* Copy of the system test script peak_lists.py to spectrum.py.  This is for the implementation of calculation of signal to noise ratio, selection and deselection.
 +
* Initialised first test in the Spectrum system test class.  This is simply loading some intensity data, and checks data.  The [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.spectrum.Spectrum-class.html#test_signal_noise_ratio system test Spectrum.test_signal_noise_ratio] will be expanded to test the calculation of the signal to noise ratio.
 +
* Added the Spectrum system test class to the init file, so these system tests can be executed.
 +
* Added the [http://www.nmr-relax.com/api/3.3/pipe_control.spectrum-module.html#signal_noise_ratio pipe_control.spectrum.signal_noise_ratio() backend function], for calculation of the signal to noise ratio per spin.
 +
* Added [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.spectrum.Spectrum-class.html#test_grace_int system test Spectrum.test_grace_int], to test plotting the intensity per residue.  This is to prepare for a grace plotting of the signal to noise level per residue.  Also added additional tests for signal to noise ratio calculation in the system test Spectrum.test_signal_noise_ratio.
 +
* Added [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.spectrum.Spectrum-class.html#test_grace_sn_ratio system test Spectrum.test_grace_sn_ratio] to help implement plotting the signal to noise ratio per residue.
 +
* Added the common API Parameter structure 'sn_ratio' in [http://www.nmr-relax.com/api/3.3/specific_analyses.parameter_object-module.html parameter_object].
 +
* For the specific analysis of "noe", "relax_disp", and "relax_fit", initialised the sn_ratio parameter structure.
 +
* Added float around values in [http://www.nmr-relax.com/api/3.3/pipe_control.spectrum-module.html#signal_noise_ratio signal_noise_ratio() function].
 +
* Made the [http://www.nmr-relax.com/manual/spectrum_sn_ratio.html spectrum.sn_ratio user function] smaller.
 +
* Added two new system tests [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.spectrum.Spectrum-class.html#test_deselect_sn_ratio_all Spectrum.test_deselect_sn_ratio_all] and [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.spectrum.Spectrum-class.html#test_deselect_sn_ratio_any Spectrum.test_deselect_sn_ratio_any].  These test the [http://www.nmr-relax.com/manual/deselect_sn_ratio.html deselect.sn_ratio user function], to deselect spins with a signal to noise ratio lower than the specified ratio.
 +
* Added function in [http://www.nmr-relax.com/api/3.3/pipe_control.spectrum-module.html#sn_ratio_deselection pipe_control.spectrum.sn_ratio_deselection()], a function to deselect spins according to the signal to noise ratio.  The function is flexible, since it possible to use different comparison operators.  And the function can be switched, so a selection is made instead.
 +
* Added the new [http://www.nmr-relax.com/manual/deselect_sn_ratio.html deselect.sn_ratio user function] to deselect spins according to their signal to noise ratio.
 +
* Added new backend function in [http://www.nmr-relax.com/api/3.3/pipe_control.spectrum-module.html#sn_ratio_selection pipe_control.spectrum.sn_ratio_selection].  This is to select spins with a signal to noise ratio, higher or lower than the specified ratio.
 +
* Added two new system tests [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.spectrum.Spectrum-class.html#test_select_sn_ratio_all Spectrum.test_select_sn_ratio_all] and [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.spectrum.Spectrum-class.html#test_select_sn_ratio_any Spectrum.test_select_sn_ratio_any].  These test the [http://www.nmr-relax.com/manual/select_sn_ratio.html select.sn_ratio user function].
 +
* Added the new [http://www.nmr-relax.com/manual/select_sn_ratio.html select.sn_ratio user function] to select spins with signal to noise ratio above a specified ratio.  The default ratio for signal to noise selection is 10.0.  But should probably be 50-100 instead.  The default of 'all_sn' is True, meaning that all signal to noise ratios for the spins needs to pass the test.
 +
* Small fix for standard values in [http://www.nmr-relax.com/manual/deselect_sn_ratio.html deselect.sn_ratio user function].  The standard values will deselect spins which have at least one signal to noise ratio which is lower than 10.0.
 +
* Small fix for the backend of [http://www.nmr-relax.com/api/3.3/pipe_control.spectrum-module.html#sn_ratio_selection spectrum sn_ratio_selection()] and [http://www.nmr-relax.com/api/3.3/pipe_control.spectrum-module.html#sn_ratio_deselection sn_ratio_deselection()].  The standard values have been changed.
 +
* Fix for the window size in [http://www.nmr-relax.com/manual/dx_map.html dx.map user function].  The size of the windows was not compatible with the latest change.
 +
* Documentation fix in the manual for the lower and upper bonds for parameters in the grid search.
 +
* Documentation fix in the manual for the lower and upper bonds for parameters in the minimisation.
 +
* Documentation fix in the manual for the scaling values of parameters in the minimisation.  The scaling helps the minimisers to make the same step size for all parameters when moving in the &chi;<sup>2</sup> space.
 +
* Added a devel script which can quickly convert oxygen icons to the desired sizes.
 +
* Extended the devel script image size converter.
 +
* Adding new oxygen icon in all needed sizes.
 +
* Comment fix in user function [http://www.nmr-relax.com/manual/select_sn_ratio.html select.sn_ratio] and [http://www.nmr-relax.com/manual/deselect_sn_ratio.html deselect.sn_ratio].
 +
* Important fix for the [http://www.nmr-relax.com/manual/spectrum_error_analysis_per_field.html spectrum.error_analysis_per_field user function].  This is for the compilation of the user manual.  The possessive apostrophe should not be used in the text "spectrum ID's".  This grammar error triggers an unfortunate bug in the docstring fetching script docs/latex/fetch_docstrings.py whereby the script thinks that ' is the start of a quote.
 +
* Added a compressed EPS version of the 128x128/actions/document-preview-archive Oxygen icon.  The EPS bounding box was manually changed to 0 0 18 18 in a text editor.  The scanline translation parameters were also fixed by changing them all to 18 as well.  This allows the icon to be used in the relax manual.
 +
* Fix for the blacklist objects in [http://www.nmr-relax.com/api/3.3/data_store.data_classes.Element-class.html#to_xml data_store.data_classes.Element.to_xml()].  The class blacklist variable was not being taken into account.
 +
* Added the norm_type argument to the [http://www.nmr-relax.com/manual/grace_write.html grace.write user function].  This is in response to http://thread.gmane.org/gmane.science.nmr.relax.devel/7392/focus=7438.  This norm_type argument can either be 'first' or 'last' to allow different points of the plot to be the normalisation factor.  The default of 'first' preserves the old behaviour of first point normalisation.
 +
* The relax_fit_saturation_recovery.py system test script now sets the norm_type argument.  This is for testing out this new option for the [http://www.nmr-relax.com/manual/grace_write.html grace.write user function].
 +
* The new [http://www.nmr-relax.com/manual/grace_write.html grace.write user function] norm_type argument has been activated.  The argument is now passed from [http://www.nmr-relax.com/api/3.3/pipe_control.grace-module.html#write pipe_control.grace.write] into the [http://www.nmr-relax.com/api/3.3/lib.software.grace-module.html#write_xy_data write_xy_data() function] of the [http://www.nmr-relax.com/api/3.3/lib.software.grace-module.html lib.software.grace module], and is used to select which point to use for the normalisation.
 +
* The [http://www.nmr-relax.com/api/3.3/auto_analyses.relax_fit-module.html relaxation exponential curve-fitting auto-analysis] now sets the normalisation type.  This is for the new [http://www.nmr-relax.com/manual/grace_write.html grace.write user function].  If the model for all spins is set to 'sat', then the norm_type will be set to 'last'.  This allows for reasonable normalised curves for the saturation recovery R<sub>1</sub> experiment types.
 +
* Change for norm_type variable in the [http://www.nmr-relax.com/api/3.3/auto_analyses.relax_fit-module.html relaxation exponential curve-fitting auto-analysis].  This is now set to 'last', not only for the saturation recovery, but now also for the inversion recovery experiment types.  This ensures that the normalisation point is the steady state magnetisation peak intensity.
 +
* Cleared the list of blacklisted objects for the cdp.exp_info data structure.  The [http://www.nmr-relax.com/api/3.3/data_store.exp_info.ExpInfo-class.html data_store.exp_info.ExpInfo class] blacklist variable had previously not been used.  But after recent changes, the list was now active.  As all the contents of the container were blacklisted, the container was being initialised as being empty when reading the XML formatted state or results files.  Therefore the blacklist is now set to an empty list.
 +
* Improvements for all of the tables of the relaxation dispersion chapter of the manual.  The captions are now the full width (or height for rotated tables) of the page in the PDF version of the manual.  The \latex{} command from the latex2html package has been used to improve the HTML versions of the tables by deactivating the landscape environment, the cmidrule command, and the caption width commands.  This results in properly HTML formatted tables, rather than creating a PNG image for the whole table.  These should significantly improve the tables in the webpages http://www.nmr-relax.com/manual/Comparison_of_dispersion_analysis_software.html, http://www.nmr-relax.com/manual/The_relaxation_dispersion_auto_analysis.html, and http://www.nmr-relax.com/manual/Dispersion_model_summary.html.
 +
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_molecules Structure.test_align_molecules system test].  This will be used to extend the functionality of the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] to be able to align different molecules in the same data pipe, rather than requiring either models or identically named structures in different data pipes.
 +
* Modified the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_molecules Structure.test_align_molecules system test].  This now simultaneously checks both the pipes and molecules arguments to the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].
 +
* More changes for the new [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_molecules Structure.test_align_molecules system tes]t.
 +
* Some more fixes for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_molecules Structure.test_align_molecules system test].
 +
* Change to the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align Structure.test_align system test].  The molecules argument for the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] has been changed to match the models argument, in that it now needs to be a list of lists with the first dimension matching the pipes argument.  This change is to help with the implementation of the new [http://www.nmr-relax.com/manual/structure.align.html structure.align] functionality.
 +
* Implemented the new molecules argument for the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  In addition to accepting the new argument, the user function backend has been redesigned for flexibility.  The assembly of coordinates and final rotations and translations now consist of three loops over desired data pipes, all models, and all molecules.  If the models or molecules arguments are supplied, then the models or molecules in the loop which do not match are skipped.  This logic simplifies and cleans up the backend.
 +
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_rmsd_molecules Structure.test_rmsd_molecules system test].  This will be used to implement a new molecules argument for the [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd user function] so that the RMSD between different molecules rather than different models can be calculated.
 +
* Implemented the new molecules argument for the [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd user function].  This allows the RMSD between different molecules rather than different models to be calculated, extending the functionality of this user function.
 +
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_displacement_molecules Structure.test_displacement_molecules system test].  This will be used to implement the new molecules argument for the [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement user function].
 +
* Implemented the molecules argument for the [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement user function].  This allows the displacements (translations and rotations) to be calculated between different molecules rather than different models.  This information is stored in the dictionaries of the cdp.structure.displacement object with the keys set to the molecule list indices.
 +
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_find_pivot Structure.test_find_pivot system test].  This is to check the [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot user function] as this algorithm is currently not being checked in the test suite.
 +
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_find_pivot_molecules Structure.test_find_pivot_molecules system test].  This will be used to implement support for a molecules argument in the [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot user function] so that different molecules rather than different models can be used in the analysis.
 +
* Increased the precision of pivot optimisation in the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_find_pivot_molecules Structure].test_find_pivot_molecules system test.
 +
* Implemented the molecules argument for the [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot user function].  This allows the motional pivot optimisation between different molecules rather than different models.
 +
* Shifted the atomic assembly code from the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] into its own function.  The new function [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#assemble_coordinates assemble_coordinates()] of the [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html pipe_control.structure.main module] will be used to standardise the process of assembling atomic coordinates for all of the structure user functions.  This will improve the support for comparing different molecules rather than different models as missing atoms or divergent primary sequence are properly handled, and it has multi-pipe support.
 +
* Changed the argument order for the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  The standardised order will now be pipes, models, molecules, atom_id, etc.
 +
* Converted the [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot user function] to the new pipes/models/molecules/atom_id design.  This allows the motional pivot algorithm to work on atomic coordinates from different data pipes, different structural models, and different molecules.  The change allows the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_find_pivot_molecules Structure.test_find_pivot_molecules system test] to now pass, as missing atomic data is now correctly handled.  The user function backend uses the new [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#assemble_coordinates pipe_control.structure.main.assemble_coordinates() function].  The Structure.test_find_pivot and [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_find_pivot_molecules Structure.test_find_pivot_molecules] system tests have been updated for the user function argument changes.
 +
* Shift of the atomic coordinate assembly code into the relax library.  Most of the [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#assemble_coordinates pipe_control.structure.main.assemble_coordinates() function] has been shifted into the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array assemble_coord_array() function] of the new [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html lib.structure.internal.coordinates module].  The pipe_control function now only checks the arguments and assembles the structural objects from the relax data store, and then calls assemble_coord_array() to do all of the work.  This code abstraction increases the usefulness of the atomic coordinate assembly and allows it to be significantly expanded in the future, for example by being able to take sequence alignments into consideration.
 +
* Tooltip standardisation for the [http://www.nmr-relax.com/manual/structure_align.html structure.align] and [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot] user functions.
 +
* The coordinate assembly function now returns list of unique IDs.  This is for each structural object, model and molecule.
 +
* Changed the structure ID strings returned by the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array assemble_coord_array() function].  This is from the lib.structure.internal.coordinates module.  The structural object name is only included if more than one structural object has been supplied.
 +
* More improvements for the structure ID strings returned by the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array assemble_coord_array() function].
 +
* Converted the internal structural displacement object to use unique IDs rather than model numbers.  This allows the object to be much more flexible in what types of structures it can handle.  This is in preparation for a change in the [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement user function].
 +
* Converted the [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement user function] to the new pipes/models/molecules/atom_id design.  This allows the displacements to be calculated between atomic coordinates from different data pipes, different structural models, and different molecules.  The user function backend has been hugely simplified as it now uses the new [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#assemble_coordinates pipe_control.structure.main.assemble_coordinates()] function.  The [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_displacement Structure.test_displacement system test] has been updated for the user function argument changes.
 +
* Another refinement for the structure ID strings returned by the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array assemble_coord_array() function].
 +
* Updated the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_displacement_molecules Structure.test_displacement_molecules system test].  This is for the changes to the [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement user function].
 +
* Docstring spelling fixes for the steady-state NOE and relaxation curve-fitting auto-analyses.
 +
* Converted the [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd user function] to the new pipes/models/molecules/atom_id design.  This allows the RMSD calculation to work on atomic coordinates from different data pipes, different structural models, and different molecules.  The user function backend uses the new [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#assemble_coordinates pipe_control.structure.main.assemble_coordinates() function].  The [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_rmsd_molecules Structure.test_rmsd_molecules system test] has been updated for the user function argument changes.
 +
* Created the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.object.Internal-class.html#model_list internal structural object model_list() method].  This is to simplify the assembly of a list of all current models in the structural object.
 +
* Converted the [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose user function] to the new pipes/models/molecules/atom_id design.  The user function arguments have not changed, however the backend now uses the new [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#assemble_coordinates pipe_control.structure.main.assemble_coordinates() function].  This is to simply decrease the number of failure points possible in the structure user functions.  The change has no effect on the user function use or results.
 +
* Documentation fix for the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array assemble_coord_array() function].  The return values for lib.structure.internal.coordinates.assemble_coord_array() were incorrectly documented.
 +
* Modified the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_bug_22070_structure_superimpose_after_deletion Structure.test_bug_22070_structure_superimpose_after_deletion system test].  This now calls the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] after calling the [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose user function] to better test a condition that can trigger bugs.
 +
* Fixes for the [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] and [http://www.nmr-relax.com/manual/structure_align.html structure.align] user functions.  The [http://www.nmr-relax.com/api/3.3/lib.structure.superimpose-module.html#fit_to_mean fit_to_mean()] and [http://www.nmr-relax.com/api/3.3/lib.structure.superimpose-module.html#fit_to_first fit_to_first()] functions of [http://www.nmr-relax.com/api/3.3/lib.structure.superimpose-module.html lib.structure.superimpose] where being incorrectly called, in that they expect a list of elements and not lists of lists.
 +
* Code refactorisation for the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] backend.  The looping over data pipes, model numbers, and molecule names, skipping those that don't match the function arguments, has been shifted into the new [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#structure_loop structure_loop() generator function] of the [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html pipe_control.structure.main module].  This function assembles the data from the data store and then calls the new [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#loop_coord_structures loop_coord_structures() generator function] of the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html lib.structure.internal.coordinates module] which does all of the work.
 +
* Some docstring expansions for the [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html pipe_control.structure.main module] functions.
 +
* Refactored the descriptions of a number of structure user functions.  This includes the [http://www.nmr-relax.com/manual/structure_align.html structure.align], [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement], [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot], [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd] and [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] user functions.  The [http://www.nmr-relax.com/api/3.3/user_functions.structure-module.html#paragraph_multi_struct paragraph_multi_struct] and [http://www.nmr-relax.com/api/3.3/user_functions.structure-module.html#paragraph_atom_id paragraph_atom_id] module strings have been created and are shared as two paragraphs for each of these user function descriptions.  This standardises the pipe/model/molecule/atom_id descriptions.  The user function wizard page sizes have been updated for these changes.
 +
* Changed the design of the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array lib.structure.internal.coordinates.assemble_coord_array() function].  The elements_flag argument has been renamed to seq_info_flag.  If this is set, then in addition to the atomic elements, the molecule name, residue name, residue number, and atom name is now assembled and returned.  This information is now the common information between the structures, hence the return values for the elements are a list of str rather than list of lists.  All of the code in [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html pipe_control.structure.main] has been updated for the change.
 +
* Fix for the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] if no data pipes are supplied.  The pipes list was no longer being created as it was shifted to the [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#assemble_coordinates assemble_coordinates() function], however it is required for the translation and rotation function calls.
 +
* Converted the [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion user function] to the new pipe/model/molecule/atom_id design.  This allows the web of motion representation to work on atomic coordinates from different data pipes, different structural models, and different molecules.  The user function backend uses the new [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#assemble_coordinates pipe_control.structure.main.assemble_coordinates() function] to assemble the common atom coordinates, molecule names, residue names, residue numbers, atom names and elements.  All this information is then used to construct the new web of motion PDB file.  Therefore the entire backend has been rewritten.  The [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_web_of_motion_12 Structure.test_web_of_motion_12], [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_web_of_motion_13 Structure.test_web_of_motion_13], and [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_web_of_motion_all Structure.test_web_of_motion_all] system tests have all been updated for the changed [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion user function] arguments.  In addition, the system tests [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_web_of_motion_12_molecules Structure.test_web_of_motion_12_molecules], [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_web_of_motion_13_molecules Structure.test_web_of_motion_13_molecules] and [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_web_of_motion_all_molecules Structure.test_web_of_motion_all_molecules] have been created as a copy of the other tests but with the 3 structures loaded as different molecules.
 +
* Fix for the IDs returned by [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array lib.structure.internal.coordinates.assemble_coord_array()].  The list of unique structure IDs was being incorrectly constructed if multiple molecules are present but the molecules argument was not supplied.  It would be of a different size to the coordinate data structure.
 +
* Fix for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_displacement Structure.test_displacement system test] for the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array assemble_coord_array() function] bugfix.
 +
* Modified the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align Structure.test_align system test] to show a failure of the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  The alignment causes all atoms in the structural object to be translated and rotated, whereas it should only operate on the atoms of the atom_id argument.
 +
* Modified the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_superimpose_fit_to_mean Structure.test_superimpose_fit_to_mean system test].  This is also to demonstrate a bug, this time in the [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose user function], in which the algorithm causes a translation and rotation of all atoms rather than just those selected by the atom_id argument.
 +
* Modified some system tests of the [http://www.nmr-relax.com/manual/structure_align.html structure.align] and [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] user functions.  The displace_id argument has been introduced for both of these user functions for finer control over which atoms are translated and rotated by the algorithm.  This allows, for example, to align structures based on a set of backbone heavy atoms while the protons and side chains are displaced by default.  Or if a domain is aligned, then just that domain can be displaced.
 +
* Added the displace_id argument to the [http://www.nmr-relax.com/manual/structure_align.html structure.align] and [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] user functions.  This gives both of these user functions finer control over which atoms are translated and rotated by the algorithm.  This allows, for example, to align structures based on a set of backbone heavy atoms while the protons and side chains are displaced by default.  Or if a domain is aligned, then just that domain can be displaced.
 +
* Fixes for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_superimpose_fit_to_mean Structure.test_superimpose_fit_to_mean system test] for the displace_id argument.
 +
* Modified the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_molecules Structure.test_align_molecules system test] to catch a bug.  This is the failure of the displace_id argument of the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] when the molecules argument is supplied - all atoms are being displaced instead of a subset.
 +
* Fix for the displace_id and molecules arguments of the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  The atom ID used for the translations and rotations is now properly constructed from the molecule names in the molecules list and the displace_id string.
 +
* Changes for water in the PDB file created by the [http://www.nmr-relax.com/manual/structure_write_pdb.html structure.write_pdb user function].  The waters with the residue name 'HOH' are no longer output to HET records.
 +
* Improvement for the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function].  The helix and sheet secondary structure reading now takes the real_mol argument into account to avoid reading in too much information.
 +
* Improvement for the merge argument of the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function].  This argument is now overridden if the molecule to merge to does not exist.  This allows the merge flag to be used together with read_mol and set_mol_name set to lists.
 +
* Fix for the selective secondary structure reading of the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function].  The molecule index needs to incremented by 1 to be the molecule number.
 +
* Large improvement for the PDB molecule identification code.  This affects the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function].  Now the chain ID code, if present in the PDB file, is being used to determine which ATOM and HETATM records belong to which molecule.  All of the records for each molecule are stored until the end, when they are all yielded.  This allows for discontinuous chain IDs throughout the PDB file, something which occurs often with the HETATM records.
 +
* Expanded the displace_id argument for the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  This can now be a list of atom IDs, so that any atoms can be rotated together with the structure being aligned.  This is useful if the molecules argument is supplied.
 +
* Fix for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.noe.Noe-class.html#test_bug_21562_noe_replicate_fail Noe.test_bug_21562_noe_replicate_fail system test].  This is for the changed behaviour of the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function].  The problem is that the PDB file read in this test has the chain ID set to X.  This broken PDB causes molecule numbering problems.
 +
* Expanded the description of the [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd user function].
 +
* Changed the paragraph ordering in the documentation of a number of the structure user functions.  This includes the [http://www.nmr-relax.com/manual/structure_align.html structure.align], [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement], and [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot] user functions.
 +
* Fix for the prompt examples documentation for the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].
 +
* Improved the sizing layout of the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] GUI dialog.
 +
* Improved the sizing layout of the [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose user function] GUI dialog.
 +
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_atomic_fluctuations Structure.test_atomic_fluctuations system test].  This will be used to implement the idea of the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].
 +
* Implemented the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].  This is loosely based on the [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion user function] and is related to it.  The user function will write to file a correlation matrix of interatomic distance fluctuations.
 +
* Created 4 unit tests for the [http://www.nmr-relax.com/api/3.3/lib.io-module.html#swap_extension lib.io.swap_extension function].  This is in preparation for implementing the function.
 +
* Implemented the [http://www.nmr-relax.com/api/3.3/lib.io-module.html#swap_extension lib.io.swap_extension() function].  This is confirmed to be fully functional by its four unit tests.
 +
* Created the empty [http://www.nmr-relax.com/api/3.3/lib.plotting-module.html lib.plotting package].  This follows from [http://thread.gmane.org/gmane.science.nmr.relax.devel/7444 this thread].  The package will be used for assembling all of the data plotting capabilities of relax.  It will make support for different plotting software - Grace, OpenDX, matplotlib, gnuplot, etc - more coherent.  This will be used to create a software independent API for plotting in relax.  I.e. the plotting software is chosen by the user and then the data output by the user function passes into the lib.plotting API which is then passed into the software dependent backend in lib.plotting.
 +
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_atomic_fluctuations_gnuplot Structure.test_atomic_fluctuations_gnuplot system test].  This checks the operation of the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function] when the output format is set to 'gnuplot'.  This will be used to implement this option.  The current gnuplot script expected by this test is just a very basic starting script for now.
 +
* Created the [http://www.nmr-relax.com/api/3.3/lib.plotting-module.html lib.plotting API] function correlation_matrix().  This is the [http://www.nmr-relax.com/api/3.3/lib.plotting.api-module.html#correlation_matrix lib.plotting.api.correlation_matrix() function].  It will be used for the visualisation of rank-2 correlation matrices.  The current basic API design here uses a dictionary of backend functions (currently empty) for calling the backend.
 +
* Implemented a very basic [http://www.nmr-relax.com/api/3.3/lib.plotting.gnuplot-module.html#correlation_matrix gnuplot backend for the correlation_matrix() plotting API function].  This is in the new [http://www.nmr-relax.com/api/3.3/lib.plotting.gnuplot-module.html lib.plotting.gnuplot module].  It creates an incredibly basic gnuplot script for visualising the correlation matrix, assuming a text file has already been created.
 +
* Enabled the gnuplot format for the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].  This uses the [http://www.nmr-relax.com/api/3.3/lib.plotting.api-module.html#correlation_matrix plotting API correlation_matrix() function] for visualisation.  The change allows the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_atomic_fluctuations_gnuplot Structure.test_atomic_fluctuations_gnuplot system test] to pass.
 +
* Shifted the matrix output of the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function] into [http://www.nmr-relax.com/api/3.3/lib.plotting.text-module.html lib.plotting.text].  The new lib.plotting.text module will be used by the relax library plotting API to output data into plain text format.  The current [http://www.nmr-relax.com/api/3.3/lib.plotting.text-module.html#correlation_matrix correlation_matrix() function], which has been added to the API correlation_matrix() function dictionary, simply has the file writing code of the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].  This significantly simplifies the user function.
 +
* More simplifications for the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function] backend.
 +
* Fix for the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function] backend.  The [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#atomic_fluctuations pipe_control.structure.main.atomic_fluctuations() function] no longer opens the output file.
 +
* The [http://www.nmr-relax.com/api/3.3/lib.plotting.gnuplot-module.html#correlation_matrix gnuplot correlation_matrix() plotting API function] now creates a text file of the data.  The lib.plotting.gnuplot.correlation_matrix() function now calls the [http://www.nmr-relax.com/api/3.3/lib.plotting.text-module.html#correlation_matrix lib.plotting.text.correlation_matrix() function] prior to creating the gnuplot script.
 +
* Significantly expanded the gnuplot script from via the [http://www.nmr-relax.com/api/3.3/lib.plotting.gnuplot-module.html#correlation_matrix correlation_matrix() plotting API function].  This is for the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].  The output terminal is now set to EPS, the colour map changed from the default to a blue-red map, labels have been added, the plot is now square, and comments are now included throughout the script to help a user hand modify it after creation.
 +
* Improvement in the comments from the [http://www.nmr-relax.com/api/3.3/lib.plotting.gnuplot-module.html#correlation_matrix gnuplot correlation_matrix() plotting API function].
 +
* Updated the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_atomic_fluctuations_gnuplot Structure.test_atomic_fluctuations_gnuplot system test].  This is for the [http://www.nmr-relax.com/api/3.3/lib.plotting.gnuplot-module.html#correlation_matrix gnuplot correlation_matrix() plotting API] changes which affect the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].
 +
* Docstring fixes for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_atomic_fluctuations_gnuplot Structure.test_atomic_fluctuations_gnuplot system test].  This was pointing to the [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd user function] instead of structure.atomic_fluctuations.
 +
* Fixes and improvements for the [http://www.nmr-relax.com/api/3.3/lib.plotting.gnuplot-module.html#correlation_matrix gnuplot correlation_matrix() plotting API function].  This is for the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].  The "pm3d map" plot type is incorrect for such data type, so instead of using 'splot', 'plot' is being used instead.  The resultant EPS file is now much smaller.  The colour map has also been changed to one of the inbuilt ones for higher contrast.
 +
* Forced the [http://www.nmr-relax.com/api/3.3/lib.plotting.gnuplot-module.html#correlation_matrix gnuplot correlation_matrix] plot to be square.  This is for the correlation_matrix() plotting API function used by the new [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].
 +
* Updated the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_atomic_fluctuations_gnuplot Structure.test_atomic_fluctuations_gnuplot system test].  This is for the changes of the [http://www.nmr-relax.com/api/3.3/lib.plotting.gnuplot-module.html#correlation_matrix gnuplot correlation_matrix() plotting API function] used by the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].
 +
* Docstring fix for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_atomic_fluctuations Structure.test_atomic_fluctuations system test].
 +
* Another docstring fix for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_atomic_fluctuations Structure.test_atomic_fluctuations system test].
 +
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_atomic_fluctuations_angle Structure.test_atomic_fluctuations_angle system test].  This will be used to implement the mapping of inter-atomic vector angular fluctuations between structures via a new 'measure' keyword argument for the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].
 +
* Implemented angular fluctuations for the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].  This adds the measure argument to the user function to allow either the default of 'distance' or the 'angle' setting to be chosen.  The implementation is confirmed by the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_atomic_fluctuations_angle Structure.test_atomic_fluctuations_angle system test] which now passes.
 +
* Clean ups and speed ups of the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].  Duplicate calculations are now avoided, as the SD matrix is symmetric.
 +
* Description improvements and GUI layout fixes for the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].
 +
* Added the 'parallax shift' measure to the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].  The parallax shift is defined as the length of the average vector minus the interatomic vector.  It is similar to the angle measure however, importantly, it is independent of the distance between the two atoms.
 +
* Updated the gnuplot scripts to be executable.  These are the scripts created by the [http://www.nmr-relax.com/api/3.3/lib.plotting.gnuplot-module.html#correlation_matrix gnuplot specific correlation_matrix() plotting API function].  The file is made executable and the script now starts with "#!/usr/bin/env gnuplot".
 +
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_atomic_fluctuations_parallax Structure.test_atomic_fluctuations_parallax system test].  This is to demonstrate that the parallax shift fluctuations are not implemented correctly.
 +
* Fix for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_atomic_fluctuations_parallax Structure.test_atomic_fluctuations_parallax system test].  The distance shifts need to be numbers, not vectors.
 +
* Proper implementation of the 'parallax shift' for the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].
 +
* Improved the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function] documentation.  The fluctuation categories are now better explained.  And the 'parallax shift' option is now available in the GUI.
 +
* Fix for the parallax shift description in the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].  The parallax shift is not quite orthogonal to the distance fluctuations.
 +
* Implemented [http://www.nmr-relax.com/api/3.3/auto_analyses.relax_disp_repeat_cpmg-module.html#ordinary_least_squares ordinary_least_squares function] the [http://www.nmr-relax.com/api/3.3/auto_analyses.relax_disp_repeat_cpmg-module.html repeated auto-analysis].  Inspection of statistics books, shows that several authors does not recommend using regression through the origin (RTO).  From Joseph G. Eisenhauer, Regression through the Origin:  RTO residuals will usually have a nonzero mean, because forcing the regression line through the origin is generally inconsistent with the best fit; R square measures (for RTO) the proportion of the variability in the dependent variable "about the origin" explained by regression.  This cannot be compared to R square for models which include an intercept.  From "Experimental design and data analysis for biologists", G. P. Quinn, M. J. Keough: Minimum observed xi rarely extends to zero, and forcing our regression line through the origin not only involves extrapolating the regression line outside our data range but also assuming the relationship is linear outside this range (Cade & Terrell 1997, Neter et al. 1996); We recommend that it is better to have a model that fits the observed data well than one that goes through the origin but provides a worse fit to the observed data; residuals from the no-intercept model no longer sum to zero; usual partition of SSTotal into SSRegression and SSResidual does not work.
 +
* Added save state for test of bug 23186.  [https://gna.org/bugs/index.php?23186 Bug #23186: Error calculation of individual parameter &delta;&omega; from Monte-Carlo, is based on first spin].
 +
* Added the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_disp.Relax_disp-class.html#test_bug_23186_cluster_error_calc_dw system test Relax_disp.test_bug_23186_cluster_error_calc_dw] which shows the failure of Monte Carlo simulations error calculations.  [https://gna.org/bugs/index.php?23186 Bug #23186: Error calculation of individual parameter &delta;&omega; from Monte-Carlo, is based on first spin].
 +
* Added additional test for the r2a parameter.  [https://gna.org/bugs/index.php?23186 Bug #23186: Error calculation of individual parameter &delta;&omega; from Monte-Carlo, is based on first spin].
 +
* Attempt to implement the GUI test General.test_bug_23187_residue_delete_gui.  This will NOT catch the error.  [https://gna.org/bugs/index.php?23187 Bug #23187: Deleting residue in GUI, and then open spin viewer crashes relax].
 +
* Added test for spin independent error of k<sub>AB</sub>.  [https://gna.org/bugs/index.php?23186 Bug #23186: Error calculation of individual parameter &delta;&omega; from Monte-Carlo, is based on first spin].
 +
* Fix for the showing of the spin viewer window in the GUI tests.  The [http://www.nmr-relax.com/api/3.3/gui.relax_gui.Main-class.html#show_tree show_tree() method] of the [http://www.nmr-relax.com/api/3.3/gui.relax_gui.Main-class.html main GUI window class] was not calling the [http://www.nmr-relax.com/api/3.3/gui.spin_viewer.frame.Spin_view_window-class.html#Show custom self.spin_viewer.Show() method], as required to set up the observer objects required to keep the spin viewer window updated.  The value of status.show_gui was blocking this.  Instead the show argument of this Show() method is being set to status.show_gui to allow the method to always be executed.
 +
* Updated the main relax copyright notices for 2015.
 +
* The copyright notice in the GUI now uses the info box object.  This is for the status bar at the bottom of the GUI window.  This removes one place where copyright notices needs to be updated each year.  This status text will then be updated whenever the info.py file has been updated.
 +
* Updated the copyright notice for 2015 in the GUI splash screen graphic.
 +
* Racing fixes for the General.test_bug_23187_residue_delete_gui GUI test.  Some [http://www.nmr-relax.com/api/3.3/gui.interpreter.Interpreter-class.html#flush GUI interpreter flush()] calls have been added to avoid racing in the GUI.  The GUI tests are so quick that the asynchronous user function call will be processed at the same time as the spin viewer window is being created, causing fatal segmentation faults in the test suite.
 +
* More robustness for the spin viewer GUI window prune_*() methods.  When no spin data exists, the self.tree.GetItemPyData(key) call can return None.  This is now being checked for and such None values are being skipped in the [http://www.nmr-relax.com/api/3.3/gui.spin_viewer.tree.Mol_res_spin_tree-class.html#prune_mol prune_mol()], [http://www.nmr-relax.com/api/3.3/gui.spin_viewer.tree.Mol_res_spin_tree-class.html#prune_res prune_res()] and [http://www.nmr-relax.com/api/3.3/gui.spin_viewer.tree.Mol_res_spin_tree-class.html#prune_spin prune_spin()] methods.  The problem was found in the [http://www.nmr-relax.com/api/3.3/test_suite.gui_tests.model_free.Mf-class.html#test_bug_20479_gui_final_pipe Mf.test_bug_20479_gui_final_pipe system test] when running the command: for i in {1..10}; do ./relax --gui-tests --time -d &>> gui_tests.log; done
 +
* More robustness for the spin viewer GUI window update_*() methods.  When no spin data exists, the self.tree.GetItemPyData(key) call can return None.  This is now being checked for and such None values are being skipped in the [http://www.nmr-relax.com/api/3.3/gui.spin_viewer.tree.Mol_res_spin_tree-class.html#update_mol update_mol()], [http://www.nmr-relax.com/api/3.3/gui.spin_viewer.tree.Mol_res_spin_tree-class.html#update_res update_res()] and [http://www.nmr-relax.com/api/3.3/gui.spin_viewer.tree.Mol_res_spin_tree-class.html#update_spin update_spin()] methods.  The problem was found in the [http://www.nmr-relax.com/api/3.3/test_suite.gui_tests.model_free.Mf-class.html#test_bug_20479_gui_final_pipe Mf.test_bug_20479_gui_final_pipe system test] when running the command: for i in {1..10}; do ./relax --gui-tests --time -d &>> gui_tests.log; done
 +
* More robustness for the spin viewer GUI window prune_*() methods.  The data returned from the self.tree.GetItemPyData(key) call can in rare racing cases not contain the 'id' key.  This is now being checked for and are being skipped in the [http://www.nmr-relax.com/api/3.3/gui.spin_viewer.tree.Mol_res_spin_tree-class.html#prune_mol prune_mol()], [http://www.nmr-relax.com/api/3.3/gui.spin_viewer.tree.Mol_res_spin_tree-class.html#prune_res prune_res()] and [http://www.nmr-relax.com/api/3.3/gui.spin_viewer.tree.Mol_res_spin_tree-class.html#prune_spin prune_spin()] methods.  The problem was found in the [http://www.nmr-relax.com/api/3.3/test_suite.gui_tests.model_free.Mf-class.html#test_bug_20479_gui_final_pipe Mf.test_bug_20479_gui_final_pipe system test] when running the command: for i in {1..10}; do ./relax --gui-tests --time -d &>> gui_tests.log; done
 +
* More robustness for the spin viewer GUI window update_*() methods.  The data returned from the self.tree.GetItemPyData(key) call can in rare racing cases not contain the 'id' key.  This is now being checked for and are being skipped in the [http://www.nmr-relax.com/api/3.3/gui.spin_viewer.tree.Mol_res_spin_tree-class.html#update_mol update_mol()], [http://www.nmr-relax.com/api/3.3/gui.spin_viewer.tree.Mol_res_spin_tree-class.html#update_res update_res()] and [http://www.nmr-relax.com/api/3.3/gui.spin_viewer.tree.Mol_res_spin_tree-class.html#update_spin update_spin()] methods.  The problem was found in the [http://www.nmr-relax.com/api/3.3/test_suite.gui_tests.model_free.Mf-class.html#test_bug_20479_gui_final_pipe Mf.test_bug_20479_gui_final_pipe system tes]t when running the command: for i in {1..10}; do ./relax --gui-tests --time -d &>> gui_tests.log; done
 +
* Created a development document for catching segfaults and other errors in the GUI tests.  This is needed as not all wxPython errors can be caught in the Python unittest framework.
 +
* Small whitespace formatting fix for the titles printed by the [http://www.nmr-relax.com/manual/align_tensor_display.html align_tensor.display user function].
 +
* Improvements for the plots created by the [http://www.nmr-relax.com/manual/pcs_corr_plot.html pcs.corr_plot user function].  The axes now have labels, and have the range and number of ticks set to reasonable values.
 +
* Improvements for the [http://www.nmr-relax.com/manual/pcs_corr_plot.html pcs.corr_plot user function] - the plot range is now determined by the data.
 +
* Improvements for the [http://www.nmr-relax.com/manual/rdc_corr_plot.html rdc.corr_plot user function] - the plot range is now determined by the data.
 +
* Added save state for testing implementation of error analysis.  {{gna task link|?7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* Simplification of [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_disp.Relax_disp-class.html#test_task_7882_monte_carlo_std_residual system test Relax_disp.test_task_7882_monte_carlo_std_residual], to just test the creation of Monte-Carlo data where errors are drawn from the reduced &chi;<sup>2</sup> distribution.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* Extension of the [http://www.nmr-relax.com/manual/monte_carlo_create_data.html monte_carlo.create_data user function] to draw errors from the reduced &chi;<sup>2</sup> Gauss distribution as found by best fit.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* Adding to backend of [http://www.nmr-relax.com/api/3.3/pipe_control.error_analysis-module.html pipe_control.error_analysis()], to modify data point as error drawn from the reduced &chi;<sup>2</sup> Gauss distribution.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* Adding empty API method to return errors from the reduced &chi;<sup>2</sup> distribution.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* Added API function in relaxation dispersion to return error structure from the reduced &chi;<sup>2</sup> distribution.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* Temporary test of making a confidence interval as described in fitting guide.  This is [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_disp.Relax_disp-class.html#x_test_task_7882_kex_conf system test Relax_disp.x_test_task_7882_kex_conf], which is not activated by default.  Running the test, interestingly shows, there is a possibility for a lower global k<sub>ex</sub>.  But the value only differ from k<sub>ex</sub>=1826 to k<sub>ex</sub>=1813.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* Change to [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_disp.Relax_disp-class.html#x_test_task_7882_kex_conf system test Relax_disp.x_test_task_7882_kex_conf()].  This is just a temporary system test, to check for local minima.  This is method in regression book of Graphpad: http://www.graphpad.com/faq/file/Prism4RegressionBook.pdf Page: 109-111.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* Raising an error, if the [[R2eff]] model is used, and drawing errors from the fit.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* To [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_disp.Relax_disp-class.html#test_task_7882_monte_carlo_std_residual system test Relax_disp.test_task_7882_monte_carlo_std_residual()], adding test for raise of errors, if the [[R2eff]] model is selected.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* Added test of argument "distribution" in [http://www.nmr-relax.com/api/3.3/pipe_control.error_analysis-module.html#monte_carlo_create_data pipe_control.error_analysis.monte_carlo_create_data()].  This is to make sure that a wrong argument is not passed into the function.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* Extended the [http://www.nmr-relax.com/manual/monte_carlo_create_data.html monte_carlo.create_data user function], to allow for the definition of the STD to use in Gauss distribution.  This is for creation of Monte-Carlo simulations, where one has perhaps gained information about the expected errors of the data points, which is not measured.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* In backend [http://www.nmr-relax.com/api/3.3/pipe_control.error_analysis-module.html#monte_carlo_create_data pipe_control.error_analysis.monte_carlo_create_data()] added the argument 'fixed_error' to allow for fixed input of error to the Gauss distribution.  Inserted a range of checks, to make sure function behaves as expected.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* Added to [http://www.nmr-relax.com/api/3.3/pipe_control.error_analysis-module.html#monte_carlo_create_data pipe_control.error_analysis.monte_carlo_create_data()] the creation of data points for a fixed distribution.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* To [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_disp.Relax_disp-class.html#test_task_7882_monte_carlo_std_residual system test Relax_disp.test_task_7882_monte_carlo_std_residual()], added tests for creation of Monte-Carlo data by different methods.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* In [http://www.nmr-relax.com/api/3.3/pipe_control.error_analysis-module.html#monte_carlo_create_data pipe_control.error_analysis.monte_carlo_create_data()], if data is of list type or ndarray, then modify the data point according to the fixed error if the distribution is set to 'fixed'.  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* Expanded the STD acronym, to the meaning of standard deviation.  This is in the [http://www.nmr-relax.com/manual/monte_carlo_create_data.html monte_carlo.create_data user function].  {{gna task link|7882|text=Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals}}.
 +
* Added a RelaxWarning printout to the [http://www.nmr-relax.com/api/3.3/dep_check-module.html dep_check module] if wxPython 2.8 or less is encountered.  This follows from http://thread.gmane.org/gmane.science.nmr.relax.devel/7502.  The warning text is simply written to STDERR as relax starts.
 +
* Updated the wxPython version in the relax manual to be 2.9 or higher.  This is in the section http://www.nmr-relax.com/manual/Dependencies.html.
 +
* The GUI tests are now skipped for wxPython version <= 2.8 due to bugs causing fatal segfaults.  This follows from http://thread.gmane.org/gmane.science.nmr.relax.devel/7502.  These wxPython versions are simply too buggy.
 +
* Fix for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_disp.Relax_disp-class.html#test_bug_23186_cluster_error_calc_dw Relax_disp.test_bug_23186_cluster_error_calc_dw system test] on 32-bit and Python <= 2.5 systems.
 +
* Better error handling in the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  If no common atoms can be found between the structures, a RelaxError is now raised for better user feedback.
 +
* Created an empty [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment-module.html lib.sequence_alignment relax library package].  This may be used in the future for implementing more advanced structural alignments (the current method is simply to skip missing atoms, sequence numbering changes are not handled).
 +
* Added the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment-module.html sequence_alignment package] to the lib package __all__ list.
 +
* Added the unit testing infrastructure for the new [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment-module.html lib.sequence_alignment package].
 +
* Implementation of the Needleman-Wunsch sequence alignment algorithm.  This is located in the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.needleman_wunsch-module.html lib.sequence_alignment.needleman_wunsch module].  This is implemented as described in the Wikipedia article https://en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithm.
 +
* Created a unit test for checking the Needleman-Wunsch sequence alignment algorithm.  This uses the DNA data from the example in the Wikipedia article at https://en.wikipedia.org/wiki/Needleman%E2%80%93Wunsch_algorithm.  The test shows that the implementation of the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.needleman_wunsch-module.html#needleman_wunsch_align lib.sequence_alignment.needleman_wunsch.needleman_wunsch_align() function] is correct.
 +
* Created the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html lib.sequence_alignment.substitution_matrices module].  This is for storing substitution matrices for use in sequence alignment.  The module currently only includes the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html#BLOSUM62 BLOSSUM62 matrix].
 +
* Corrected the spelling of the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html#BLOSUM62 BLOSUM62 matrix] in [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html lib.sequence_alignment.substitution_matrices].
 +
* Fix for the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html#BLOSUM62_SEQ lib.sequence_alignment.substitution_matrices.BLOSUM62_SEQ string].
 +
* Modification of the Needleman-Wunsch sequence alignment algorithm implementation.  This is in the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.needleman_wunsch-module.html lib.sequence_alignment.needleman_wunsch] functions.  Scoring matrices are now supported, as well as a user supplied non-integer gap penalty.  The algorithm for walking through the traceback matrix has been fixed for a bug under certain conditions.
 +
* Created the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.align_protein-module.html lib.sequence_alignment.align_protein module] for the sequence alignment of proteins.  This general module currently implements the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.align_protein-module.html#align_pairwise align_pairwise() function] for the pairwise alignment of protein sequences.  It provides the infrastructure for specifying gap starting and extension penalties, choosing the alignment algorithm (currently only the Needleman-Wunsch sequence alignment algorithm as 'NW70'), and choosing the substitution matrix (currently only BLOSUM62).  The function provides lots of printouts for user feedback.
 +
* Created a unit test for [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.align_protein-module.html#align_pairwise lib.sequence_alignment.align_protein.align_pairwise()].  This is to test the pairwise alignment of two protein sequences using the Needleman-Wunsch sequence alignment algorithm, BLOSUM62 substitution matrix, and gap penalty of 10.0.
 +
* Added more printouts to the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_align_protein.Test_align_protein-class.html#test_align_pairwise Test_align_protein.test_align_pairwise unit test].  This is the test of the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_align_protein-module.html module _lib._sequence_alignment.test_align_protein].
 +
* Fix for the Needleman-Wunsch sequence alignment algorithm when the substitution matrix is absent.
 +
* The [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.align_protein-module.html#align_pairwise lib.sequence_alignment.align_protein.align_pairwise() function] now returns data.  This includes both alignment strings as well as the gap matrix.
 +
* Annotated the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html#BLOSUM62 BLOSUM62 substitution matrix] with the amino acid codes for easy reading.
 +
* Updated the gap penalties in the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_align_protein.Test_align_protein-class.html#test_align_pairwise Test_align_protein.test_align_pairwise unit test].  This is from the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_align_protein-module.html unit test module _lib._sequence_alignment.test_align_protein].
 +
* Modified the Needleman-Wunsch sequence alignment algorithm.  The previous attempt was buggy.  The algorithm has been modified to match the logic of the GPL licenced [http://emboss.sourceforge.net/ EMBOSS software] to allow for gap opening and extension penalties, as well as end penalties.  No code was copied, rather the algorithm for creating the scoring and penalty matrices, as well as the traceback matrix.
 +
* Added a DNA similarity matrix to [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html lib.sequence_alignment.substitution_matrices].
 +
* Added sanity checks to the Needleman-Wunsch sequence alignment algorithm.  The residues of both sequences are now checked in [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.needleman_wunsch-module.html#needleman_wunsch_align needleman_wunsch_align()] to make sure that they are present in the substitution matrix.
 +
* Added the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html#NUC_4_4 NUC 4.4 nucleotide substitution matrix] from ftp://ftp.ncbi.nih.gov/blast/matrices/.  Uracil was added to the table as a copy to T.
 +
* Added the header from ftp://ftp.ncbi.nih.gov/blast/matrices/BLOSUM62.  This is to document the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html#BLOSUM62 BLOSUM62 substitution matrix].
 +
* Added the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html#PAM250 PAM 250 amino acid substitution matrix].  This was taken from ftp://ftp.ncbi.nih.gov/blast/matrices/PAM250 and added to lib.sequence_alignment.substitution_matrices.PAM250.
 +
* Modified the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_needleman_wunsch.Test_needleman_wunsch-class.html#test_needleman_wunsch_align_DNA Test_needleman_wunsch.test_needleman_wunsch_align_DNA unit test] to pass.  This is from the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_needleman_wunsch-module.html unit test module _lib._sequence_alignment.test_needleman_wunsch].  The DNA sequences were simplified so that the behaviour can be better predicted.
 +
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_needleman_wunsch.Test_needleman_wunsch-class.html#test_needleman_wunsch_align_NUC_4_4 Test_needleman_wunsch.test_needleman_wunsch_align_NUC_4_4 unit test].  This is in the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_needleman_wunsch-module.html unit test module _lib._sequence_alignment.test_needleman_wunsch].  This tests the Needleman-Wunsch sequence alignment for two DNA sequences using the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html#NUC_4_4 NUC 4.4 matrix].
 +
* Created a unit test for demonstrating a failure in the Needleman-Wunsch sequence alignment algorithm.  The test is [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_needleman_wunsch.Test_needleman_wunsch-class.html#test_needleman_wunsch_align_NUC_4_4b Test_needleman_wunsch.test_needleman_wunsch_align_NUC_4_4b] from the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_needleman_wunsch-module.html _lib._sequence_alignment.test_needleman_wunsch module].  The problem is that the start of the alignment is truncated if any gaps are present.
 +
* Fix for the Needleman-Wunsch sequence alignment algorithm.  The start of the sequences are no longer truncated when starting gaps are encountered.
 +
* The [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.needleman_wunsch-module.html#needleman_wunsch_align needleman_wunsch_align() function] now accepts the end gap penalty arguments.  These are passed onto the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.needleman_wunsch-module.html#needleman_wunsch_matrix needleman_wunsch_matrix() function].
 +
* Added the end gap penalty arguments to [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.align_protein-module.html#align_pairwise lib.sequence_alignment.align_protein.align_pairwise()].
 +
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_CaM_BLOSUM62 Structure.test_align_CaM_BLOSUM62 system test].  This will be used for expanding the functionality of the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] to perform true sequence alignment via the new [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment-module.html lib.sequence_alignment package].  The test aligns 3 calmodulin (CaM) structures from different organisms, hence the sequence numbering is different and the current [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] design fails.  The [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] has been expanded in the test to include a number of arguments for advanced sequence alignment.
 +
* Added support for the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html#PAM250 PAM250 substitution matrix] to the protein pairwise sequence alignment function.  This is the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.align_protein-module.html#align_pairwise function lib.sequence_alignment.align_protein.align_pairwise()].
 +
* Bug fix for the Needleman-Wunsch sequence alignment algorithm.  Part of the scoring system was functioning incorrectly when the gap penalty scores were non-integer, as some scores were being stored in an integer array.  Now the array is a float array.
 +
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_align_protein.Test_align_protein-class.html#test_align_pairwise_PAM250 Test_align_protein.test_align_pairwise_PAM250 unit test].  This is in the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._lib._sequence_alignment.test_align_protein-module.html  unit test module _lib._sequence_alignment.test_align_protein].  It checks the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.align_protein-module.html#align_pairwise protein alignment function lib.sequence_alignment.align_protein.align_pairwise()] together with the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html#PAM250 PAM250 substitution matrix].
 +
* Small docstring expansion for [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.align_protein-module.html#align_pairwise lib.sequence_alignment.align_protein.align_pairwise()].
 +
* Added the sequence alignment arguments to the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] front end.  This includes the 'matrix', 'gap_open_penalty', 'gap_extend_penalty', 'end_gap_open_penalty', and 'end_gap_extend_penalty' arguments.  The 'algorithm' argument has not been added to save room, as there is only one choice of 'NW70'.  A paragraph has been added to the user function description to explain the sequence alignment part of the user function.
 +
* Added the sequence alignment arguments to the back end of the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  This is to allow the code in trunk to be functional before the sequence alignment before superimposition has been implemented.
 +
* Removed the 'algorithm' argument from the Structure.test_align_CaM_BLOSUM62 system test script.  This is for the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  The argument has not been implemented to save room in the GUI, and as 'NW70' is currently the only choice.
 +
* The sequence alignment arguments are now passed all the way to the internal structural object backend.  These are the arguments of the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].
 +
* Created the [http://www.nmr-relax.com/api/3.3/lib.sequence-module.html#aa_codes_three_to_one lib.sequence.aa_codes_three_to_one() function].  The [http://www.nmr-relax.com/api/3.3/lib.sequence-module.html lib.sequence module] now contains the [http://www.nmr-relax.com/api/3.3/lib.sequence-module.html#AA_CODES AA_CODES dictionary] which is a translation table for the 3 letter amino acid codes to the one letter codes.  The new [http://www.nmr-relax.com/api/3.3/lib.sequence-module.html#aa_codes_three_to_one aa_codes_three_to_one() function] performs the conversion.
 +
* Implemented the internal structural object [http://www.nmr-relax.com/api/3.3/lib.structure.internal.molecules.MolContainer-class.html#loop_residues MolContainer.loop_residues() method].  This generator method is used to quickly loop over all residues of the molecule.
 +
* Implemented the internal structural object [http://www.nmr-relax.com/api/3.3/lib.structure.internal.object.Internal-class.html#one_letter_codes one_letter_codes() method].  This will create a string of one letter residue codes for the given molecule.  Only proteins are currently supported.  This method uses the new [http://www.nmr-relax.com/api/3.3/lib.sequence-module.html#aa_codes_three_to_one lib.sequence.aa_codes_three_to_one() relax library function].
 +
* Sequence alignment is now performed in [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array lib.structure.internal.coordinates.assemble_coord_array()].  This is a pairwise alignment to the first molecule of the list.  The alignments are not yet used for anything.  The [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array assemble_coord_array() function] is used by the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function], as well as a few other structure user functions.
 +
* Fix for the [http://www.nmr-relax.com/api/3.3/lib.sequence-module.html#aa_codes_three_to_one lib.sequence.aa_codes_three_to_one() function].  Non-standard residues are now converted to the '*' code.  The value of 'X' prevents any type of alignment of a stretch of X residues as X to X in both the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html#BLOSUM62 BLOSUM62] and [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.substitution_matrices-module.html#PAM250 PAM250] substitution matrices are set to -1.
 +
* Modified the gap penalty arguments for the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  These now must always be supplied, as None is not handled by the backend [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.needleman_wunsch-module.html lib.sequence_alignment.needleman_wunsch module].  The previous defaults of None are now set to 0.0.
 +
* Updated the artificial diffusion tensor test suite data.  This is the data in test_suite/shared_data/diffusion_tensor.  The residues in the PDB files are now proper amino acids, so the HETATM records are now ATOM records, and the CONECT records have been eliminated.
 +
* Another update for the artificial diffusion tensor test suite data.  The number of increments on the sphere has been increased from 5 to 6, to make the vector distribution truly uniform.  All PDB files and relaxation data has been updated.
 +
* Changed the synthetic PDB for the artificial diffusion tensor test suite data.  The nitrogen and proton positions are now shifted 10 Angstrom along the distribution vectors.  This is to avoid having all nitrogens positioned at the origin which causes the internal structural object algorithm for determining which atoms are connected to fail.
 +
* Reintroduced the CONECT PDB records into the artificial diffusion tensor test suite data.  The uniform vector distributions have overlapping vectors.  This causes the internal structural object atom connection determining algorithm to fail, as this is distance-based rather than using the PDB amino acid definitions for now.
 +
* Updates for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_create_diff_tensor_pdb_sphere Structure.test_create_diff_tensor_pdb_sphere system test].  The test now uses the sphere synthetic relaxation data rather than the ellipsoid data, and the PDB checking has been updated for the new data.
 +
* Updates for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_create_diff_tensor_pdb_prolate Structure.test_create_diff_tensor_pdb_prolate system test].  The test now uses the spheroid synthetic relaxation data rather than the ellipsoid data, and the PDB checking has been updated for the new data.
 +
* Updates for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_create_diff_tensor_pdb_oblate Structure.test_create_diff_tensor_pdb_oblate system test].  The test now uses the spheroid synthetic relaxation data rather than the ellipsoid data, and the PDB checking has been updated for the new data.  The oblate tensor is now forced in the system test script.
 +
* Updates for the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_create_diff_tensor_pdb_ellipsoid Structure.test_create_diff_tensor_pdb_ellipsoid system test].  The PDB checking has been updated for the new data.
 +
* Updated the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_delete_atom Structure.test_delete_atom system test] for the changed PDB structures.  The test_suite/shared_data/diffusion_tensor/spheroid/uniform.pdb file now has more residues, and the atomic positions are different.
 +
* Updated the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align Structure.test_align system test] for the changed PDB structures.  The test_suite/shared_data/diffusion_tensor/spheroid/uniform.pdb file now has more residues, and the atomic positions are different.
 +
* Updated the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align_molecules Structure.test_align_molecules system test] for the changed PDB structures.  The test_suite/shared_data/diffusion_tensor/spheroid/uniform.pdb file now has more residues, and the atomic positions are different.
 +
* Python 3 fix for the [http://www.nmr-relax.com/api/3.3/lib.sequence-module.html lib.sequence module].  The string.upper() function no longer exists.
 +
* Python 3 fix for the [http://www.nmr-relax.com/api/3.3/lib.sequence_alignment.align_protein-module.html lib.sequence_alignment.align_protein module].  The string.upper() function no longer exists.
 +
* Modified the generate_data.py diffusion tensor to relaxation data creation script.  The NH vectors are no longer truncated to match the PDB.
 +
* Python 3 fix for the generate_data.py diffusion tensor to relaxation data creation script.  The string.upper() function no longer exists.
 +
* Reintroduced the simulated PDB truncation into the artificial diffusion tensor test suite data.  This is different to the previous implementation which was deleted recently.  It now simulates the truncation of both the N and H positions in the PDB and reconstructs the expected vector.
 +
* Updates for some of the Structure.test_create_diff_tensor_pdb_* system tests.  This includes [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_create_diff_tensor_pdb_ellipsoid Structure.test_create_diff_tensor_pdb_ellipsoid], [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_create_diff_tensor_pdb_oblate Structure.test_create_diff_tensor_pdb_oblate], and [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_create_diff_tensor_pdb_prolate Structure.test_create_diff_tensor_pdb_prolate].  The new simulated PDB truncation in the test data causes the PDB files created in these tests to be slightly different.
 +
* The pairwise sequence alignment is now active in the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  This is implemented in the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array lib.structure.internal.coordinates.assemble_coord_array() function] for assembling atomic coordinates.  It will also automatically be used by many of the structure user functions which operate on multiple structures.  The atomic coordinate assembly logic has been completely changed.  Instead of grouping atomic information by the molecule, it is now grouped per residue.  This allows the residue based sequence alignments to find matching coordinate information.  The assemble_coord_array() function will also handle the algorithm argument set to None and assume that the residue sequences are identical between the structures, but this should be avoided.  A new function, common_residues() has been created as a work-around for not having a multiple sequence alignment implementation.  It will take the pairwise sequence alignment information and construct a special data structure specifying which residues are present in all structures.  The logic for skipping missing atoms remains in place, but it now operates on the residue rather than molecule level and simply uses the atom name rather than atom ID to identify common atoms.
 +
* Changed the gap opening penalty to 10 in the N-state model structure_align.py system test script.
 +
* Docstring update for the [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#assemble_coordinates pipe_control.structure.main.assemble_coordinates() function].  This is for the algorithm argument which can now be set to None.
 +
* Fix for the sequence alignment for assembling atomic coordinates.  This caused the Structure.test_superimpose_fit_to_mean system test to fail.  The problem was in the new logic of the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#assemble_coord_array lib.structure.internal.coordinates.assemble_coord_array() function].  The coordinate assembly now terminates when either the end of the first molecule or the current molecule is reached.
 +
* Bug fixes for the new [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#common_residues lib.structure.internal.coordinates.common_residues() function].  This function for determining the common residues between multiple sets of pairwise alignments was failing in quite a number of cases.  The logic has been updated to handle these.
 +
* Another fix for the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.coordinates-module.html#common_residues lib.structure.internal.coordinates.common_residues() function].  The wrong index was being used to skip residues in the second sequence.
 +
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_pdb_combined_secondary_structure Structure.test_pdb_combined_secondary_structure system test].  This is used to demonstrate a problem in the handling of secondary structure metadata when combining multiple PDB structures.  It appears as if the chain ID is preserved as the original ID and is not updated to match the new IDs in the output PDB.
 +
* Updated the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_metadata_xml Structure.test_metadata_xml system test] for the changed PDB metadata handling.  The helix and sheets IDs are now molecule indices.
 +
* Disabled the General.test_bug_23187_residue_delete_gui GUI test.  This is essential as a wxPython bug in Mac OS X systems causes this test to trigger a 'Bus Error' every time the GUI tests are run, killing relax.
 
<section end=changes/>
 
<section end=changes/>
  
== Bugfixes ==
+
=== Bugfixes ===
  
 
<section begin=bugfixes/>
 
<section begin=bugfixes/>
 +
* Bug fix for the [http://www.nmr-relax.com/api/3.3/lib.arg_check-module.html#is_int_list lib.arg_check.is_int_list() function] for checking a list of lists.  This is used to check user function arguments, but was causing a RelaxError to be raised for all integer list of lists user function arguments when a valid value is supplied.  The function has been updated to match the [http://www.nmr-relax.com/api/3.3/lib.arg_check-module.html#is_str_list is_str_list() function] which does not suffer from this bug.
 +
* Fix in dispersion API, to set error value for clustered values.  [https://gna.org/bugs/index.php?23186 Bug #23186: Error calculation of individual parameter &delta;&omega; from Monte-Carlo, is based on first spin].
 +
* Fix for [https://gna.org/bugs/?23187 bug #23187, the problem whereby opening the spin viewer window, deleting a residue, and then reopening the spin viewer crashes relax].  This change completes the spin viewer update_*() functions.  The prune_list variable was initialised but not used.  Now it is used to store the keys of the items to delete, and then the items are deleted at the end in a new loop so that the loop over the dictionary keys is not corrupted.
 +
* Fix for the [http://www.nmr-relax.com/manual/rdc_corr_plot.html rdc.corr_plot user function].  The Y-axis is now set to the measured RDC, as the RDC errors are plotted as dY errors.  This matches the behaviour of the [http://www.nmr-relax.com/manual/pcs_corr_plot.html pcs.corr_plot user function].
 +
* Bug fix for the printouts from the [http://www.nmr-relax.com/manual/relax_data_read.html relax_data.read user function].  This problem was introduced in the last relax release.  The problem is that the spin ID in the loaded relaxation data printout is the same for all data, being the spin ID of the first spin.  This has no effect on how relax runs, it is only incorrect feedback.
 +
* Bug fix for the PDB secondary sheet handling when combining multiple PDB structures.  The helix and sheet metadata now converts the original chain IDs into molecule indices, shifted to new values based on the currently loaded data, when the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function] is executed.  When the [http://www.nmr-relax.com/manual/structure_write_pdb.html structure.write_pdb user function] is executed, the molecule indices are converted into new chain IDs.  This allows the chain IDs in the HELIX and SHEET records to match those of the ATOM and HETATOM records.
 +
* Bug fix for the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function] parsing of CONECT records.  CONECT records pointing to ATOM records were not being read by the user function.  As ATOM records should not require CONECT records by their definition, this is only a minor problem affecting synthetic edge cases.
 
<section end=bugfixes/>
 
<section end=bugfixes/>
  
= Links =
+
== Links ==
  
 
<section begin=links/>
 
<section begin=links/>
 
For reference, the announcement for this release can also be found at following links:
 
For reference, the announcement for this release can also be found at following links:
  
* [http://wiki.nmr-relax.com/Relax_3.3.4 Official release notes on the relax wiki].
+
* [http://wiki.nmr-relax.com/Relax_3.3.5 Official release notes on the relax wiki].
* [https://gna.org/forum/forum.php?forum_id=2483 Gna! news item].
+
* {{gna link|url=gna.org/forum/forum.php?forum_id=2492|text=Gna! news item}}.
* [http://article.gmane.org/gmane.science.nmr.relax.announce/62 Gmane mailing list archive].
+
* [http://article.gmane.org/gmane.science.nmr.relax.announce/63 Gmane mailing list archive].
* [http://www.mail-archive.com/relax-announce%40gna.org/msg00053.html The Mail Archive].
+
* [http://www.mail-archive.com/relax-announce%40gna.org/msg00054.html The Mail Archive].
* [https://mail.gna.org/public/relax-announce/2014-12/msg00000.html Local archives].
+
* [https://mail.gna.org/public/relax-announce/2015-01/msg00000.html Local archives].
* [http://marc.info/?l=relax-announce&m=141773006429004&w=2 Mailing list ARChives (MARC)].
+
* [https://marc.info/?l=relax-announce&m=142248784423361&w=2 Mailing list ARChives (MARC)].
  
 
{{:Softpedia}}
 
{{:Softpedia}}
 
<section end=links/>
 
<section end=links/>
  
= Announcements =
+
== Announcements ==
  
 
{{:relax release announcements}}
 
{{:relax release announcements}}
  
  
= See also =
+
== See also ==
  
 
* [http://www.nmr-relax.com/api/3.3/ The relax 3.3 API documentation]
 
* [http://www.nmr-relax.com/api/3.3/ The relax 3.3 API documentation]
 
{{:relax release see also}}
 
{{:relax release see also}}
 
[[Category:Relaxation dispersion analysis]]
 
[[Category:Relaxation dispersion analysis]]

Latest revision as of 13:37, 16 October 2020


Official relax releases
relax logo
relax version 3.3.5
Previous version Next version
← relax 3.3.4 relax 3.3.6 →

Release type Major feature and bugfix
Release date 27 January 2015

The PDF version of the relax 3.3.5 user manual The relax 3.3.5 user manual

Description

This is a major feature and bugfix release. It fixes an important bug in the Monte Carlo simulation error analysis in the relaxation dispersion analysis. Features include improvements to the NMR spectral noise error analysis, expansion of the grace.write user function to handle both first and last point normalisation for reasonable R1 curves in saturation recovery experiments, the implementation of Needleman-Wunsch pairwise sequence alignment algorithm using the BLOSUM62, PAM250 and NUC 4.4 substitution matrices for more advanced 3D structural alignments via the structure.align and structure.superimpose user functions as well as any of the other structure user functions dealing with multiple molecules, conversion of the structure.displacement, structure.find_pivot, structure.rmsd, structure.superimpose and structure.web_of_motion user functions to a new pipes/models/molecules/atom_id design to allow the user functions to operate on different data pipes, different structural models and different molecules, addition of the displace_id argument to the structure.align and structure.superimpose user functions to allow finer control over which atoms are translated and rotated by the algorithm, large improvement for the PDB molecule identification code affecting the structure.read_pdb user function, creation of the lib.plotting package for assembling all of the data plotting capabilities of relax, implementation of the new structure.atomic_fluctuations user function for creating text output or Gnuplot graphs of the correlation matrix of interatomic distance, angle or parallax shift fluctuations, the implementation of ordinary least squares fitting, and improvements for the pcs.corr_plot and rdc.corr_plot user functions. Many more features and bugfixes are listed below.


Download

The new relax versions can be downloaded from http://www.nmr-relax.com/download.html. If binary distributions are not yet available for your platform and you manage to compile the binary modules, please consider contributing these to the relax project (described in section 3.6 of the relax manual, http://www.nmr-relax.com/manual/relax_distribution_archives.html).


CHANGES file

Version 3.3.5
(27 January 2015, from /trunk)
http://svn.gna.org/svn/relax/tags/3.3.5


Features


Changes


Bugfixes


Links

For reference, the announcement for this release can also be found at following links:

Softpedia also has information about the newest relax releases:


Announcements

If you would like to receive announcements about new relax versions, please subscribe to the relax announcement mailing list. This list only receives ~10 emails per year. It is archived at the SourceForge archives and in The Mail Archive.


See also