mailrelax version 3.3.5.


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Edward d'Auvergne on January 28, 2015 - 09:58:
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.

For the official, easy to navigate release notes, please see
http://wiki.nmr-relax.com/Relax_3.3.5.

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).

The full list of changes is:

    Features:
        * Improvements to the NMR spectral noise error analysis.
        * Addition of the new spectrum.error_analysis_per_field user
function to quickly perform a per-NMR field spectrum error analysis.
        * Added 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 select.sn_ratio and deselect.sn_ratio user
functions to change the selection status of spins according to their
signal to noise ratio.
        * Expansion of the grace.write user function to handle both
first and last point normalisation for reasonable R1 curves in
saturation recovery experiments.
        * Conversion of the structure.align, structure.displacement,
structure.find_pivot, structure.rmsd, structure.superimpose and
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
structure.atomic_fluctuations user function.
        * 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 independently
of the align_id atom ID for selecting atoms used in the
superimposition.
        * Large improvement for the PDB molecule identification code
affecting the 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 lib.plotting package for assembling all of
the data plotting capabilities of relax into a unified software
independent API.
        * 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,
measured as sample standard deviations, between different molecules.
        * The implementation of ordinary least squares fitting.
        * And improvements for the pcs.corr_plot and 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 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
- structure.atomic_fluctuations, structure.displacement,
structure.find_pivot, structure.rmsd, structure.superimpose,
structure.web_of_motion.
        * Improved support for PDB secondary structure metadata for
the structure.read_pdb and structure.write_pdb user functions.


    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 pipe_control/spectrum.py.
        * Added the function pipe_control.error_analysis_per_field(),
as an automatic way of submitting subset IDs per field for error
analysis.
        * For the pipe_control.spectrum.error_analysis_per_field(),
added additional printout of subset IDs used for error analysis.
        * In the auto_analysis.relax_disp module, used the new
spectrum.error_analysis_per_field user function to calculate the peak
intensity errors.
        * Reinserted the 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 user function spectrum.error_analysis_per_field().  The
implementation can be tested with the
Relax_disp.test_estimate_r2eff_err_auto system test.
        * In 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
system test 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 pipe_control.spectrum.signal_noise_ratio() backend
function, for calculation of the signal to noise ratio per spin.
        * Added 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 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
parameter_object.
        * For the specific analysis of "noe", "relax_disp", and
"relax_fit", initialised the sn_ratio parameter structure.
        * Added float around values in signal_noise_ratio() function.
        * Made the user function spectrum.sn_ratio smaller.
        * Added two new system tests
Spectrum.test_deselect_sn_ratio_all and
Spectrum.test_deselect_sn_ratio_any.  These test the user function
deselect.sn_ratio, to deselect spins with a signal to noise ratio
lower than the specified ratio.
        * Added function in
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 deselect.sn_ratio user function to deselect
spins according to their signal to noise ratio.
        * Added new backend function in
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 Spectrum.test_select_sn_ratio_all
and Spectrum.test_select_sn_ratio_any.  These test the select.sn_ratio
user function.
        * Added the new 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 user function
deselect.sn_ratio.  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 spectrum sn_ratio_selection()
and sn_ratio_deselection().  The standard values have been changed.
        * Fix for the window size in user function dx.map.  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 chi2
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 select.sn_ratio and deselect.sn_ratio.
        * Important fix for the 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
data_store.data_classes.Element.to_xml().  The class blacklist
variable was not being taken into account.
        * Added the norm_type argument to the 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 grace.write user function.
        * The new grace.write user function norm_type argument has
been activated.  The argument is now passed from
pipe_control.grace.write into the write_xy_data() function of the
lib.software.grace module, and is used to select which point to use
for the normalisation.
        * The relaxation exponential curve-fitting auto-analysis now
sets the normalisation type.  This is for the new 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 R1 experiment types.
        * Change for norm_type variable in the 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 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 Structure.test_align_molecules system test.
This will be used to extend the functionality of the 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 Structure.test_align_molecules system test.
This now simultaneously checks both the pipes and molecules arguments
to the structure.align user function.
        * More changes for the new Structure.test_align_molecules system test.
        * Some more fixes for the Structure.test_align_molecules system test.
        * Change to the Structure.test_align system test.  The
molecules argument for the 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
structure.align functionality.
        * Implemented the new molecules argument for the
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 Structure.test_rmsd_molecules system test.  This
will be used to implement a new molecules argument for the
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
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 Structure.test_displacement_molecules system
test.  This will be used to implement the new molecules argument for
the structure.displacement user function.
        * Implemented the molecules argument for the
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 Structure.test_find_pivot system test.  This is
to check the structure.find_pivot user function as this algorithm is
currently not being checked in the test suite.
        * Created the Structure.test_find_pivot_molecules system test.
This will be used to implement support for a molecules argument in the
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
Structure.test_find_pivot_molecules system test.
        * Implemented the molecules argument for the
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 structure.align
user function into its own function.  The new function
assemble_coordinates() of the 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 structure.align user
function.  The standardised order will now be pipes, models,
molecules, atom_id, etc.
        * Converted the 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 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
pipe_control.structure.main.assemble_coordinates() function.  The
Structure.test_find_pivot and 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
pipe_control.structure.main.assemble_coordinates() function has been
shifted into the assemble_coord_array() function of the new
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 structure.align and
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
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 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 structure.displacement user
function.
        * Converted the 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 pipe_control.structure.main.assemble_coordinates()
function.  The Structure.test_displacement system test has been
updated for the user function argument changes.
        * Another refinement for the structure ID strings returned by
the assemble_coord_array() function.
        * Updated the Structure.test_displacement_molecules system
test.  This is for the changes to the structure.displacement user
function.
        * Docstring spelling fixes for the steady-state NOE and
relaxation curve-fitting auto-analyses.
        * Converted the 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
pipe_control.structure.main.assemble_coordinates() function.  The
Structure.test_rmsd_molecules system test has been updated for the
user function argument changes.
        * Created the 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 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
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 assemble_coord_array() function.
The return values for
lib.structure.internal.coordinates.assemble_coord_array() were
incorrectly documented.
        * Modified the
Structure.test_bug_22070_structure_superimpose_after_deletion system
test.  This now calls the structure.align user function after calling
the structure.superimpose user function to better test a condition
that can trigger bugs.
        * Fixes for the structure.superimpose and structure.align user
functions.  The fit_to_mean() and fit_to_first() functions of
lib.structure.superimpose where being incorrectly called, in that they
expect a list of elements and not lists of lists.
        * Code refactorisation for the 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 structure_loop() generator function of the
pipe_control.structure.main module.  This function assembles the data
from the data store and then calls the new loop_coord_structures()
generator function of the lib.structure.internal.coordinates module
which does all of the work.
        * Some docstring expansions for the
pipe_control.structure.main module functions.
        * Refactored the descriptions of a number of structure user
functions.  This includes the structure.align, structure.displacement,
structure.find_pivot, structure.rmsd and structure.superimpose user
functions.  The paragraph_multi_struct and 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
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
pipe_control.structure.main has been updated for the change.
        * Fix for the structure.align user function if no data pipes
are supplied.  The pipes list was no longer being created as it was
shifted to the assemble_coordinates() function, however it is required
for the translation and rotation function calls.
        * Converted the 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
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
Structure.test_web_of_motion_12, Structure.test_web_of_motion_13, and
Structure.test_web_of_motion_all system tests have all been updated
for the changed structure.web_of_motion user function arguments.  In
addition, the system tests Structure.test_web_of_motion_12_molecules,
Structure.test_web_of_motion_13_molecules and
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
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 Structure.test_displacement system test for the
assemble_coord_array() function bugfix.
        * Modified the Structure.test_align system test to show a
failure of the 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 Structure.test_superimpose_fit_to_mean system
test.  This is also to demonstrate a bug, this time in the
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 structure.align and
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 structure.align and
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 Structure.test_superimpose_fit_to_mean system
test for the displace_id argument.
        * Modified the Structure.test_align_molecules system test to
catch a bug.  This is the failure of the displace_id argument of the
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
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
structure.write_pdb user function.  The waters with the residue name
'HOH' are no longer output to HET records.
        * Improvement for the 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 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
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 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 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 Noe.test_bug_21562_noe_replicate_fail system
test.  This is for the changed behaviour of the 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 structure.rmsd user function.
        * Changed the paragraph ordering in the documentation of a
number of the structure user functions.  This includes the
structure.align, structure.displacement, and structure.find_pivot user
functions.
        * Fix for the prompt examples documentation for the
structure.align user function.
        * Improved the sizing layout of the structure.align user
function GUI dialog.
        * Improved the sizing layout of the structure.superimpose user
function GUI dialog.
        * Created the Structure.test_atomic_fluctuations system test.
This will be used to implement the idea of the
structure.atomic_fluctuations user function.
        * Implemented the structure.atomic_fluctuations user function.
This is loosely based on the 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 lib.io.swap_extension function.
This is in preparation for implementing the function.
        * Implemented the lib.io.swap_extension() function.  This is
confirmed to be fully functional by its four unit tests.
        * Created the empty lib.plotting package.  This follows from
the thread at http://thread.gmane.org/gmane.science.nmr.relax.devel/7444.
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 Structure.test_atomic_fluctuations_gnuplot
system test.  This checks the operation of the
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 lib.plotting API function correlation_matrix().
This is the 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 gnuplot backend for the
correlation_matrix() plotting API function.  This is in the new
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
structure.atomic_fluctuations user function.  This uses the plotting
API correlation_matrix() function for visualisation.  The change
allows the Structure.test_atomic_fluctuations_gnuplot system test to
pass.
        * Shifted the matrix output of the
structure.atomic_fluctuations user function into 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
correlation_matrix() function, which has been added to the API
correlation_matrix() function dictionary, simply has the file writing
code of the structure.atomic_fluctuations user function.  This
significantly simplifies the user function.
        * More simplifications for the structure.atomic_fluctuations
user function backend.
        * Fix for the structure.atomic_fluctuations user function
backend.  The pipe_control.structure.main.atomic_fluctuations()
function no longer opens the output file.
        * The gnuplot correlation_matrix() plotting API function now
creates a text file of the data.  The
lib.plotting.gnuplot.correlation_matrix() function now calls the
lib.plotting.text.correlation_matrix() function prior to creating the
gnuplot script.
        * Significantly expanded the gnuplot script from via the
correlation_matrix() plotting API function.  This is for the
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 gnuplot
correlation_matrix() plotting API function.
        * Updated the Structure.test_atomic_fluctuations_gnuplot
system test.  This is for the gnuplot correlation_matrix() plotting
API changes which affect the structure.atomic_fluctuations user
function.
        * Docstring fixes for the
Structure.test_atomic_fluctuations_gnuplot system test.  This was
pointing to the structure.rmsd user function instead of
structure.atomic_fluctuations.
        * Fixes and improvements for the gnuplot correlation_matrix()
plotting API function.  This is for the 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 gnuplot correlation_matrix plot to be square.
This is for the correlation_matrix() plotting API function used by the
new structure.atomic_fluctuations user function.
        * Updated the Structure.test_atomic_fluctuations_gnuplot
system test.  This is for the changes of the gnuplot
correlation_matrix() plotting API function used by the
structure.atomic_fluctuations user function.
        * Docstring fix for the Structure.test_atomic_fluctuations system 
test.
        * Another docstring fix for the
Structure.test_atomic_fluctuations system test.
        * Created the 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 structure.atomic_fluctuations user function.
        * Implemented angular fluctuations for the
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 Structure.test_atomic_fluctuations_angle system test
which now passes.
        * Clean ups and speed ups of the structure.atomic_fluctuations
user function.  Duplicate calculations are now avoided, as the SD
matrix is symmetric.
        * Description improvements and GUI layout fixes for the
structure.atomic_fluctuations user function.
        * Added the 'parallax shift' measure to the
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 gnuplot specific correlation_matrix() plotting
API function.  The file is made executable and the script now starts
with "#!/usr/bin/env gnuplot".
        * Created the Structure.test_atomic_fluctuations_parallax
system test.  This is to demonstrate that the parallax shift
fluctuations are not implemented correctly.
        * Fix for the Structure.test_atomic_fluctuations_parallax
system test.  The distance shifts need to be numbers, not vectors.
        * Proper implementation of the 'parallax shift' for the
structure.atomic_fluctuations user function.
        * Improved the 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
structure.atomic_fluctuations user function.  The parallax shift is
not quite orthogonal to the distance fluctuations.
        * Implemented ordinary_least_squares function the 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.  Bug #23186
(https://gna.org/bugs/index.php?23186): Error calculation of
individual parameter "dw" from Monte-Carlo, is based on first spin.
        * Added the system test
Relax_disp.test_bug_23186_cluster_error_calc_dw which shows the
failure of Monte Carlo simulations error calculations.  Bug #23186
(https://gna.org/bugs/index.php?23186): Error calculation of
individual parameter "dw" from Monte-Carlo, is based on first spin.
        * Added additional test for the r2a parameter.  Bug #23186
(https://gna.org/bugs/index.php?23186): Error calculation of
individual parameter "dw" 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.  Bug #23187 (https://gna.org/bugs/index.php?23187): Deleting
residue in GUI, and then open spin viewer crashes relax.
        * Added test for spin independent error of k_AB.  Bug #23186
(https://gna.org/bugs/index.php?23186): Error calculation of
individual parameter "dw" from Monte-Carlo, is based on first spin.
        * Fix for the showing of the spin viewer window in the GUI
tests.  The show_tree() method of the main GUI window class was not
calling the 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 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 prune_mol(), prune_res() and
prune_spin() methods.  The problem was found in the
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 update_mol(), update_res() and
update_spin() methods.  The problem was found in the
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 prune_mol(), prune_res() and
prune_spin() methods.  The problem was found in the
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 update_mol(), update_res()
and update_spin() methods.  The problem was found in the
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
        * 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 align_tensor.display user function.
        * Improvements for the plots created by the 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 pcs.corr_plot user function - the plot
range is now determined by the data.
        * Improvements for the rdc.corr_plot user function - the plot
range is now determined by the data.
        * Added save state for testing implementation of error
analysis.  Task #7882 (https://gna.org/task/?7882): Implement
Monte-Carlo simulation whereby errors are generated with width of
standard deviation or residuals.
        * Simplification of 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
chi2 distribution.  Task #7882 (https://gna.org/task/?7882): Implement
Monte-Carlo simulation whereby errors are generated with width of
standard deviation or residuals.
        * Extension of the monte_carlo.create_data user function to
draw errors from the reduced chi2 Gauss distribution as found by best
fit.  Task #7882 (https://gna.org/task/?7882): Implement Monte-Carlo
simulation whereby errors are generated with width of standard
deviation or residuals.
        * Adding to backend of pipe_control.error_analysis(), to
modify data point as error drawn from the reduced chi2 Gauss
distribution.  Task #7882 (https://gna.org/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
chi2 distribution.  Task #7882 (https://gna.org/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 chi2 distribution.  Task #7882
(https://gna.org/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 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 kex.  But the value only differ from
kex=1826 to kex=1813.  Task #7882 (https://gna.org/task/?7882):
Implement Monte-Carlo simulation whereby errors are generated with
width of standard deviation or residuals.
        * Change to 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.  Task #7882 (https://gna.org/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.  Task #7882 (https://gna.org/task/?7882):
Implement Monte-Carlo simulation whereby errors are generated with
width of standard deviation or residuals.
        * To system test
Relax_disp.test_task_7882_monte_carlo_std_residual(), adding test for
raise of errors, if the R2eff model is selected.  Task #7882
(https://gna.org/task/?7882): Implement Monte-Carlo simulation whereby
errors are generated with width of standard deviation or residuals.
        * Added test of argument "distribution" in
pipe_control.error_analysis.monte_carlo_create_data().  This is to
make sure that a wrong argument is not passed into the function.  Task
#7882 (https://gna.org/task/?7882): Implement Monte-Carlo simulation
whereby errors are generated with width of standard deviation or
residuals.
        * Extended the user function 'monte_carlo.create_data', 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.  Task #7882 (https://gna.org/task/?7882): Implement
Monte-Carlo simulation whereby errors are generated with width of
standard deviation or residuals.
        * In backend
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.  Task #7882 (https://gna.org/task/?7882):
Implement Monte-Carlo simulation whereby errors are generated with
width of standard deviation or residuals.
        * Added to
pipe_control.error_analysis.monte_carlo_create_data() the creation of
data points for a fixed distribution.  Task #7882
(https://gna.org/task/?7882): Implement Monte-Carlo simulation whereby
errors are generated with width of standard deviation or residuals.
        * To system test
Relax_disp.test_task_7882_monte_carlo_std_residual(), added tests for
creation of Monte-Carlo data by different methods.  Task #7882
(https://gna.org/task/?7882): Implement Monte-Carlo simulation whereby
errors are generated with width of standard deviation or residuals.
        * In 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'.  Task #7882
(https://gna.org/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 user function 'monte_carlo.create_data'.
Task #7882 (https://gna.org/task/?7882): Implement Monte-Carlo
simulation whereby errors are generated with width of standard
deviation or residuals.
        * Added a RelaxWarning printout to the 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 Relax_disp.test_bug_23186_cluster_error_calc_dw
system test on 32-bit and Python <= 2.5 systems.
        * Better error handling in the 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 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 sequence_alignment package to the lib package __all__ 
list.
        * Added the unit testing infrastructure for the new
lib.sequence_alignment package.
        * Implementation of the Needleman-Wunsch sequence alignment
algorithm.  This is located in the
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
lib.sequence_alignment.needleman_wunsch.needleman_wunsch_align()
function is correct.
        * Created the lib.sequence_alignment.substitution_matrices
module.  This is for storing substitution matrices for use in sequence
alignment.  The module currently only includes the BLOSSUM62 matrix.
        * Corrected the spelling of the BLOSUM62 matrix in
lib.sequence_alignment.substitution_matrices.
        * Fix for the
lib.sequence_alignment.substitution_matrices.BLOSUM62_SEQ string.
        * Modification of the Needleman-Wunsch sequence alignment
algorithm implementation.  This is in the
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 lib.sequence_alignment.align_protein module for
the sequence alignment of proteins.  This general module currently
implements the 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
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
Test_align_protein.test_align_pairwise unit test.  This is the test of
the module _lib._sequence_alignment.test_align_protein.
        * Fix for the Needleman-Wunsch sequence alignment algorithm
when the substitution matrix is absent.
        * The lib.sequence_alignment.align_protein.align_pairwise()
function now returns data.  This includes both alignment strings as
well as the gap matrix.
        * Annotated the BLOSUM62 substitution matrix with the amino
acid codes for easy reading.
        * Updated the gap penalties in the
Test_align_protein.test_align_pairwise unit test.  This is from the
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 EMBOSS software
(http://emboss.sourceforge.net/) 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
lib.sequence_alignment.substitution_matrices.
        * Added sanity checks to the Needleman-Wunsch sequence
alignment algorithm.  The residues of both sequences are now checked
in needleman_wunsch_align() to make sure that they are present in the
substitution matrix.
        * Added the 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 BLOSUM62 substitution matrix.
        * Added the 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
Test_needleman_wunsch.test_needleman_wunsch_align_DNA unit test to
pass.  This is from the unit test module
_lib._sequence_alignment.test_needleman_wunsch.  The DNA sequences
were simplified so that the behaviour can be better predicted.
        * Created the
Test_needleman_wunsch.test_needleman_wunsch_align_NUC_4_4 unit test.
This is in the unit test module
_lib._sequence_alignment.test_needleman_wunsch.  This tests the
Needleman-Wunsch sequence alignment for two DNA sequences using the
NUC 4.4 matrix.
        * Created a unit test for demonstrating a failure in the
Needleman-Wunsch sequence alignment algorithm.  The test is
Test_needleman_wunsch.test_needleman_wunsch_align_NUC_4_4b from the
_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 needleman_wunsch_align() function now accepts the end
gap penalty arguments.  These are passed onto the
needleman_wunsch_matrix() function.
        * Added the end gap penalty arguments to
lib.sequence_alignment.align_protein.align_pairwise().
        * Created the Structure.test_align_CaM_BLOSUM62 system test.
This will be used for expanding the functionality of the
structure.align user function to perform true sequence alignment via
the new lib.sequence_alignment package.  The test aligns 3 calmodulin
(CaM) structures from different organisms, hence the sequence
numbering is different and the current structure.align user function
design fails.  The structure.align user function has been expanded in
the test to include a number of arguments for advanced sequence
alignment.
        * Added support for the PAM250 substitution matrix to the
protein pairwise sequence alignment function.  This is the 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 Test_align_protein.test_align_pairwise_PAM250
unit test.  This is in the unit test module
_lib._sequence_alignment.test_align_protein.  It checks the protein
alignment function
lib.sequence_alignment.align_protein.align_pairwise() together with
the PAM250 substitution matrix.
        * Small docstring expansion for
lib.sequence_alignment.align_protein.align_pairwise().
        * Added the sequence alignment arguments to the
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 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
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 structure.align user function.
        * Created the lib.sequence.aa_codes_three_to_one() function.
The lib.sequence module now contains the AA_CODES dictionary which is
a translation table for the 3 letter amino acid codes to the one
letter codes.  The new aa_codes_three_to_one() function performs the
conversion.
        * Implemented the internal structural object
MolContainer.loop_residues() method.  This generator method is used to
quickly loop over all residues of the molecule.
        * Implemented the internal structural object
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
lib.sequence.aa_codes_three_to_one() relax library function.
        * Sequence alignment is now performed in
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 assemble_coord_array() function is
used by the structure.align user function, as well as a few other
structure user functions.
        * Fix for the 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 BLOSUM62 and PAM250 substitution matrices are set to -1.
        * Modified the gap penalty arguments for the structure.align
user function.  These now must always be supplied, as None is not
handled by the backend 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 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
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 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
Structure.test_create_diff_tensor_pdb_ellipsoid system test.  The PDB
checking has been updated for the new data.
        * Updated the 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 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 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 lib.sequence module.  The
string.upper() function no longer exists.
        * Python 3 fix for the 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
Structure.test_create_diff_tensor_pdb_ellipsoid,
Structure.test_create_diff_tensor_pdb_oblate, and
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
structure.align user function.  This is implemented in the
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
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
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
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
lib.structure.internal.coordinates.common_residues() function.  The
wrong index was being used to skip residues in the second sequence.
        * Created the 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 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.


    Bugfixes:
        * Bug fix for the 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 is_str_list() function
which does not suffer from this bug.
        * Fix in dispersion API, to set error value for clustered
values.  Bug #23186 (https://gna.org/bugs/index.php?23186): Error
calculation of individual parameter "dw" from Monte-Carlo, is based on
first spin.
        * Fix for bug #23187 (https://gna.org/bugs/?23187).  This is
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 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 pcs.corr_plot user function.
        * Bug fix for the printouts from the 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 structure.read_pdb user
function is executed.  When the 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 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.



Related Messages


Powered by MHonArc, Updated Thu Jan 29 00:20:03 2015