mailrelax version 3.3.1.


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

Header


Content

Posted by Edward d'Auvergne on October 09, 2014 - 16:56:
This is a minor feature and bugfix release.  It includes the addition
of the error_analysis.covariance_matrix, structure.align, and
structure.mean user functions and expanded functionality for the
structure.com and structure.delete user functions.  Many operations
involving the internal structural object are now orders of magnitude
faster, with the interatom.define user function showing the greatest
speed ups.  There are also improvements for helping to upgrade relax
scripts to newer relax versions.  The numdifftools package is now
bundled with relax for allowing numerical gradient, Hessian and
Jacobian matrices to be calculated.  And the release includes the
start of a new protocol for iteratively analysing repetitive
relaxation dispersion experiments.

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:
        * Initial auto-analysis support for a highly repetitive
protocol for analysing relaxation dispersion data.
        * Addition of the docs/user_function_changes.txt file which
documents all user function changes from relax 1.0.1 to 3.3.1 to help
with upgrading scripts to newer relax versions.
        * Updated the translation table used to identify no longer
existing user functions and explain what the new user function is
called for all relax versions from 1.3.1 to 3.3.1.
        * The structure.delete user function can now delete individual
models as well as select atoms in individual models.
        * Addition of the error_analysis.covariance_matrix user
function for determining parameter errors via the covariance matrix.
This is currently only implemented for the relaxation curve-fitting
analysis.
        * Bundling of the Numdifftools 0.6.0 package with relax
(https://code.google.com/p/numdifftools/) for numerically testing
implementations of gradients, Hessians, and Jacobians.
        * Implementation of the internal structural object
collapse_ensemble() method to allow for all but one model to be
deleted.
        * Massive speed up of the internal structural object by
pre-processing the atom ID string into a special atom selection
object.  This speeds up the interatom.define, structure.delete,
structure.rotate, structure.translate and many other user functions
which loop over structural data.
        * Many orders of magnitude speed up of the structure.add_model
user function.
        * Implementation of the structure.mean user function to
calculate the mean structure from the atomic coordinates of all loaded
models.
        * Implementation of the structure.align user function for
aligning and superimposing different but related structures.  This is
similar to the structure.superimpose user function but allows for
missing atomic information or small sequence changes.  Only atoms with
the same residue name and number and atom name are used in the
superimposition.
        * Expanded the structure.com user function to accept the
atom_id argument to allow the centre of mass of a subset of atoms to
be determined.
        * Improvements for the running of the relax test suite.


    Changes:
        * Epydoc docstring fix for the dep_check.version_comparison() 
function.
        * Removed ZZ and HD exchange from the dispersion chapter of
the relax manual.  These would probably require completely new
analysis types added to relax to analyse such data.
        * Updated the 'Announcement' section of the release checklist
document.  This now includes details about initially composing the
message using the relax wiki (http://wiki.nmr-relax.com), and then how
that text and the CHANGES file are used for the email announcement
(http://news.gmane.org/gmane.science.nmr.relax.announce) and the Gna!
news item (https://gna.org/news/?group=relax).
        * Small changes for the Gna! news item in the release
checklist document.
        * Modified the announcement section of the release checklist
document.  Text about removing wiki markup has been added.
        * More expansion of the release checklist document.  Added
text about creating internal and external links for the wiki release
notes.
        * Modified systemtest Relax_disp.test_show_apod_extract that
test output from showApod.  The output can be different according to
NMRPipe version.  The 'Noise Std Dev' is though the same.
        * Fix for comments to dependency check of showApod.
        * Fix for raising error when calling showApod, and subprocess
module not available.
        * Fix for the dependency check for showApod in systemtests.
        * Further extended the protocol for repeated dispersion
analysis.  Task #7826 (https://gna.org/task/index.php?7826): Write an
python class for the repeated analysis of dispersion data.
        * Extended the system test for the protocol for repeated
dispersion analysis.  Task #7826
(https://gna.org/task/index.php?7826): Write an python class for the
repeated analysis of dispersion data.
        * Added a relaxation dispersion model profiling log file for
relax version 3.3.0 vs. 3.2.3.  This is the output from the dispersion
model profiling master script.  These numbers will be used for the
relax 3.3.0 release notes (http://wiki.nmr-relax.com/Relax_3.3.0).
        * Fixes for the relax 3.3.0 vs. 3.2.3 dispersion model
profiling log file.  The numeric model numbers were incorrectly scaled
and a factor of 10 too high.
        * Fixes for the scaling factors in the dispersion model super
profiling script.
        * Editing of the relax 3.3.0 features section of the CHANGES
file.  This will be used for the release notes.
        * Added more test data for the repeated analysis.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Updated the Baldwin 2014 reference in the relax manual.  The
pybliographic software was used to format this BibTeX entry
(http://pybliographer.org/).  This was updated as volume and page
number information is now available.
        * Updated the Morin et al, 2014 paper (the relax relaxation
dispersion paper) reference in the manual.  The paper now has volume
and page information.
        * Added some more user function ranamings to the translation
table.  These were identified while preparing the release notes on the
wiki (http://wiki.nmr-relax.com/Category:Release_Notes,
http://wiki.nmr-relax.com/Release_notes).
        * Stored a frequency dependent dictionary with spectrum IDs
and repeated PMG frequencies in setup pipe.  This information will
progress out through children pipes.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Further extended methods in the class for repeated analysis
of dispersion data.  Task #7826 (https://gna.org/task/index.php?7826):
Write a Python class for the repeated analysis of dispersion data.
        * Updated the release checklist document, including adding a
section about cross-linking.  The cross-linking is important for
search engine indexing.
        * Created a simple script for printing out the names of all
user functions.
        * Added listings of all user functions from relax version
2.0.0 all the way to relax 3.3.0.  This will be used to look at how
the user function names have changed with time.
        * Added a script and log file for comparing relax user
function differences between versions.
        * Created a document for relax users which follows the changes
to the user function names.
        * For the spin.display user function, added the print out of
spin ID and status for selection.  This is to help with showing the
spin ID string for selection, and the current status of selection.
Task #7826 (https://gna.org/task/index.php?7826): Write a Python class
for the repeated analysis of dispersion data.
        * To the back-end of display pipes, added functionality to
sort the pipe names before printing.  Also added the return of the
list of pipes, with its associated information about pipe type, and
pipe_bundle.  This is to help with getting a better overview for
multiple pipes in data store.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Parsed the force flag from front end of value.set to back
end.  Bug #22598 (https://gna.org/bugs/index.php?22598).  Back end of
value.set does not respect force=False flag.
        * Broke optimisation function into smaller functions.  This is
to help selecting spins, do particular grid search and minimise.  Task
#7826 (https://gna.org/task/index.php?7826): Write a Python class for
the repeated analysis of dispersion data.
        * Modified system test to follow the new functions in the auto
analysis.  Task #7826 (https://gna.org/task/index.php?7826): Write a
Python class for the repeated analysis of dispersion data.
        * Shifted the user function listing script into the test suite
directory where the results are.
        * Created a script for printing out relax 1.3 user functions.
        * Stripped out all of the relax intro and script printouts
from the user function listing files.  This allows the diff.py script
to be simplified.
        * Updated the relax 1.3 user function printout script and
added many printouts.  The printouts are for relax versions 1.3.5 to
1.3.16.  The earlier relax versions used the relax 1.2 user function
setup.
        * Created a script for printing out all user functions for
relax 1.2 versions.  This also includes the relax 1.3.0 to 1.3.4
versions.
        * Added the relax 1.3.0 to 1.3.4 user function printouts.
        * Changed the behaviour of the script for showing user
function difference between relax versions.  The relax versions are
now reversed so the oldest version is at the bottom of the difference
printout.
        * Added the relax 1.0.1 to 1.2.15 user function printouts.
The diff.log file has also been updated with all of these versions.
        * Updated the user_function_changes.txt document.  This now
lists all changes in the user function naming from relax version 1.0.1
all the way to relax 3.3.0.
        * Added all remaining user function ranamings since relax
2.0.0 to the translation table.  These were taken directly from the
docs/user_function_changes.txt document.
        * Added all user function ranamings since relax 1.3.1 to the
translation table.  These were taken directly from the
docs/user_function_changes.txt document.  Earlier relax versions are
far too different, so this will be the earliest relax version for this
translation table.  The relax 1.2 and earlier (and 1.3.0) versions
used the run argument throughout and the scripting was so different,
that telling the user how to upgrade to new user functions is
pointless.  And the release date of relax 1.2.15, the last of these
old designs was in November 2008.
        * Changed the order of the two relax versions being compared
for user function changes.  This is in the diff.py script and log file
and the user_function_changes.txt document.
        * Changed the organisation of the files in the docs/
directory.  A new docs/devel directory has been created and the
2to3_checklist, Mac_framework_build_3way, package_layout, and
prompt_screenshot.txt documents shifted into it.  This is to hide or
abstract away the development documents so that relax users do not see
them when looking into docs/.  This should make the directory less
intimidating.
        * Shifted the Release_Checklist document into docs/devel/ to
hide it from users.
        * Correction for the noe.read to spectrum.read_intensities
user function change.  This is for the translation table used to catch
old user function calls.
        * Initial try to implement plotting in the repeated auto
analysis protocol.  Task #7826 (https://gna.org/task/index.php?7826):
Write a Python class for the repeated analysis of dispersion data.
        * Small improvement of the matplotlib plotting of data in the
repeated analysis protocol.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Fix for calling correct folder with test intensities.  Task
#7826 (https://gna.org/task/index.php?7826): Write a Python class for
the repeated analysis of dispersion data.
        * For the class of repeated analysis, implemented method to
collect peak intensity, and function to plot the correlation.  Task
#7826 (https://gna.org/task/index.php?7826): Write a Python class for
the repeated analysis of dispersion data.
        * Added system test Relax_disp.test_repeat_cpmg to be skipped,
if no matplotlib module exists.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Added the Gimp XCF file for the logo of the relax wiki
(http://wiki.nmr-relax.com).
        * Added system test
Relax_fit.test_curve_fitting_height_estimate_error() for the manual
and automated analysis of exponential fit.  This is to prepare for new
methods in the auto analysis protocol.
        * In the auto analysis of exponential fitting, changed the
minimisation method from simplex to Newton, to speed-up the fitting.
This is for master Monte Carlo simulations.
        * In the system test
Relax_fit.test_curve_fitting_height_estimate_error(), moved the
auto-detection of replicated spectra into the manual method.  This is
to prepare for auto-mated detection of replicates.
        * Implemented a method to automatically find duplicates of
spectrum in exponential fit.  This is to ease the user intervention
for error analysis, if this has been forgotten.
        * Implemented the writing out of a "grace2images.py" script
file, when performing auto analysis of exponential fits.
        * Created the Structure.test_delete_model system test.  This
is in preparation for extending the structure.delete user function to
be able to delete individual structural models.  The test will only
pass once this functionality is in place.
        * Expanded the wiki instructions in the release checklist
document.  This includes a number of steps for significantly improving
the release notes:  External links to the Gna! trackers with full
descriptions, external links to the HTML user manual for all user
functions, internal links to release notes of other relax versions,
internal links to wiki pages for all models from all theories, and
HTML formatting of all symbols/parameters/etc.
        * Introduction of the model argument to the structure.delete
user function.  This argument is passed all the way into the internal
structural object, but is not used yet.
        * The model argument in the structure.delete user function is
now operational.  In the internal object, it has two functions.  When
the atom_id argument is none, then new ModelList.delete_model()
function is being called to remove the entire model from the list of
structural models.  When the atom_id argument is supplied, then only
the corresponding atoms in the given model will be deleted.
        * Expanded the checking in the Structure.test_delete_model
system test.  Now a number of structural model loading and deletion
scenarios are tested.
        * Implemented back-end function to estimate Rx and I0 errors
from Jacobian matrix.  This is to prepare for user function in
relax_fit, to estimate errors.
        * Implemented user function relax_fit.rx_err_estimate in
relax_fit to estimate Rx and I0 errors from the Jacobian Co-variance
matrix.
        * Extended system test
Relax_fit.test_curve_fitting_height_estimate_error() to test the error
estimation method from the Co-variance matrix.  The results seems very
similar, if increasing to 2000 Monte Carlo simulations.
        * Renamed the pipe_control.monte_carlo module to
pipe_control.error_analysis.  This is in preparation for the module to
handle all error analysis techniques:  Monte Carlo simulations,
covariance matrix, Jackknife simulations, Bootstrapping (which is
currently via the Monte Carlo functions), etc.  All current functions
are now prepended with 'monte_carlo_*()'.
        * Fix for the old relax 1.2 model-free results file reading.
This is due to the pipe_control.monte_carlo to
pipe_control.error_analysis module renaming.
        * Implemented the
pipe_control.error_analysis.covariance_matrix() function.  This
follows from 
http://thread.gmane.org/gmane.science.nmr.relax.scm/23526/focus=7096.
It will be used by a new error_analysis.covariance_matrix user
function.  And it calls the specific API methods model_loop(),
covariance_matrix(), and set_error() and the relax library
lib.statistics.multifit_covar() function do to most of the work.
        * Modified the
Relax_fit.test_curve_fitting_height_estimate_error system test.  The
call to relax_fit.rx_err_estimate has been replaced by the yet-to-be
implemented error_analysis.covariance_matrix user function.
        * Creation of the error_analysis.covariance_matrix user
function.  This is simply a code rearrangement.  The relax_fit user
function module was duplicated and relax_fit.rx_err_estimate renamed
to error_analysis.covariance_matrix.  References to the specific
analysis have been removed.
        * Created the specific analysis base API method
covariance_matrix().  This defines the arguments required and what is
returned by the method.  It raises the RelaxImplementError for all
analyses which do not implement this method.
        * Modified pipe_control.error_analysis.covariance_matrix().
The call to the API covariance_matrix() method now has the model_info
argument passed into it.  For the relaxation curve-fitting, this
allows the loop over spin systems to be skipped.
        * Shifted the contents of the
specific_analysis.relax_fit.estimate_rx_err module into the API.  The
estimate_rx_err() function is now the covariance_matrix() method of
the specific API.  The code for calculating the covariance matrix and
errors are now in the function
pipe_control.error_analysis.covariance_matrix(), so this has been
removed.  And the error setting is performed by the set_errors() API
method, so that code has been deleted as well.
        * Removed the specific_analyses.relax_fit.estimate_rx_err
module import.  The module has been merged into the specific API
module.
        * Fix for the pipe_control.error_analysis.covariance_matrix()
function.  The set_errors() API method is parameter specific, so a
loop over the parameters using the get_param_names() API method has
been added.
        * Removed the estimate_rx_err module from the
specific_analyses.relax_fit.__all__ list.  This module was deleted
after merger into the api module.
        * Improved the plotting of correlation plot for intensity.
Now the intensity to error is plotted, which is the correct measure of
this data.  Task #7826 (https://gna.org/task/index.php?7826): Write a
Python class for the repeated analysis of dispersion data.
        * Implemented a correlation plot for R2eff values to be
plotted for different pipes.  This has the R2eff/R2eff_err plotted,
which is the best way to represent this data.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Further improved the plotting of data in repeated analysis.
Task #7826 (https://gna.org/task/index.php?7826): Write a Python class
for the repeated analysis of dispersion data.
        * Added the Relax_disp.test_show_apod_rmsd_dir_to_files system
test to the blacklist.  This is if the showApod program is not
installed on the machine and allows the test suite to pass.
        * Extended the printout for the skipped tests in the test
suite.  As tests using the NMRPipe showApod software are skipped and
listed in this table, the text now includes 'software' in the list.
        * Shifted the checks for the Dasha and Modelfree4 software
into the system test __init__() method.  This is to bring this into
the same design as the relaxation dispersion tests which require the
NMRPipe showApod software.  Now the test suite will list either Dasha
or Modelfree4 in the skipped test table if they are not installed.
        * Adding another statistic method to plot for multi-data sets.
Task #7826 (https://gna.org/task/index.php?7826): Write a Python class
for the repeated analysis of dispersion data.
        * More adding of matplotlib snippets for plotting intermediate
data.  Task #7826 (https://gna.org/task/index.php?7826): Write a
Python class for the repeated analysis of dispersion data.
        * Changing the range of plotting for statistics.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * More changes to plotting for statistics.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Fix for axis limits when plotting stats.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Fix for globing, to prevent incidentally taking wrong
intensity file.  Task #7826 (https://gna.org/task/index.php?7826):
Write a Python class for the repeated analysis of dispersion data.
        * Correction to figure limits.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Implemented writing out of statistics to file.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Adding writing out of PNG files from matplotlib, when
looking at statistics.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Another math domain checking, if ref intensity is set to
0.0, then points are skipped, rather than raising an Error.  This can
happen for extremely bad dispersion data.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Trying implementing flexibility, when data expected data is
missing.  This can be due failing of processing data, where a whole
run of data is randomly skipped.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Better check for math domain error in intensity
proportionality.  Task #7826 (https://gna.org/task/index.php?7826):
Write a Python class for the repeated analysis of dispersion data.
        * Removal of initialised of dictionary, before data existence
have been checked.  Task #7826 (https://gna.org/task/index.php?7826):
Write a Python class for the repeated analysis of dispersion data.
        * Small fix for correct check of missing of data.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Imported the Numdifftools 0.6.0 package into the relax
source tree.  This package is extremely useful for testing the
implementation of gradients, Hessians, and Jacobians for all relax
target functions.  The numerical values from numdifftools can be
compared to the directly calculated values.  And for analysis types
where the partial derivatives with respect to each model parameter are
too complicated to calculated, or the derivatives are very complicated
and hence slow, numdifftools can be used to provide a numerical
estimate for direct use in the optimisation.  The Numdifftools package
is from https://pypi.python.org/pypi/Numdifftools and
https://code.google.com/p/numdifftools/.  The current version 0.6.0
has been placed into extern/numdifftools.  This is only the
numdifftools package within the official distribution files and the
Python package setup.py file and associated files and directories have
not been included.  The package uses the New BSD licence (the revised
licence with no advertising clause) which is compatible with the GPL
v3 licence.
        * Reordered functions in repeated analysis protocol.  Task
#7826 (https://gna.org/task/index.php?7826): Write a Python class for
the repeated analysis of dispersion data.
        * Added more check of methods to the system test
Relax_disp.test_repeat_cpmg().  This actually shows, that user
function relax_disp.r20_from_min_r2eff maybe is broken.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Fix for the testing of method is finished when called.  Task
#7826 (https://gna.org/task/index.php?7826): Write a Python class for
the repeated analysis of dispersion data.
        * Turned on minimisation in system test
Relax_disp.test_repeat_cpmg().  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * The lib.spectrum.nmrpipe module has been made independent of
the relax source code.  This was discussed at
http://thread.gmane.org/gmane.science.nmr.relax.scm/23357/focus=7103.
The change allows the software verification tests pass.  The dep_check
module cannot be used in the relax lib package.  Only modules from
within lib are allowed to be imported into modules of lib.  The fix
now allows the full test suite to pass and hence new relax releases
are once again possible.
        * Created a document which explains how missing copyrights can be 
found.
        * Even more improvements to the shell command for finding
missing copyrights.
        * Updated the copyright notice for 2014 for all files changed
by Edward d'Auvergne.  These were identified using the command in the
find_missing_copyrights document.
        * Added numdifftools to the extern package __all__ list.
        * Updated the find_missing_copyrights document.  The matching
is now more precise and skips all svnmerge operations.
        * Added the 2014 copyright notice for Troels Linnet to many
relax source files.  These were identified as being edited by Troels
using the command listed in the find_missing_copyrights document.  The
changes include adding "Copyright 2014 Troels E. Linnet" to many files
not containing Troels' copyright notice, and extending the 2013
copyright to 2014.
        * Implemented correlation plot of minimisation values.  Task
#7826 (https://gna.org/task/index.php?7826): Write a Python class for
the repeated analysis of dispersion data.
        * Changed the missing package/module/software table in the
test suite.  This is to allow all names to fit and to update the
column titles for software packages.
        * Decreased the accuracy of a check in the
Relax_disp.test_estimate_r2eff_err_auto system test.  This is to allow
the test to pass on my Windows 7 VM.
        * Added Troels E. Linnet to the COMMITTERS file, which has not
been updated in almost 3 years.
        * Created the Structure.test_get_model system test.  This
demonstrates that the internal structural object get_model() method is
not working as it should.
        * Added a few more checks to the Structure.test_get_model system test.
        * Created the Structure.test_collapse_ensemble system test.
This is used to test a planned feature of the internal structural
object.  The collapse_ensemble() method will be created to remove all
but one model in the structural ensemble.
        * Modified the Structure.test_collapse_ensemble system test to
check the initial values.  This is for sanity reasons as the test
coverage of the structure.add_atom user function is poor.
        * Implemented the internal structural object
collapse_ensemble() method.  This allows the
Structure.test_collapse_ensemble system test to pass.
        * Created a basic text based progress meter in the new
lib.text.progress module.  This is taken from the script
test_suite/shared_data/frame_order/cam/generate_base.py.
        * Modifications to the User_functions.test_structure_add_atom
GUI test.  As lists of lists are now accepted by the
structure.add_atom user function, the operation in the GUI is now
significantly different.  Therefore many checks have been removed from
the GUI test.
        * Updated the minimum minfx dependency version number from
1.0.9 to 1.0.11 in the dep_check module.  This newest version handles
infinite target function values preventing optimisation from
continuing forever (https://gna.org/forum/forum.php?forum_id=2477).
The 1.0.10 version is also useful as there is full support for
gradients and Hessians in the log-barrier constraint algorithm
(https://gna.org/forum/forum.php?forum_id=2475).
        * Shifted the specific_analyses.relax_disp.variables module
into lib.dispersion.  This is both to minimise circular dependencies,
as previously the specific_analyses.relax_disp modules import from
target_functions.relax_disp and vice-versa, and to allow the relax
library functions to have access to these variables.  This follows
from a similar change to the frame order analysis in the
frame_order_cleanup branch.
        * Dependency fix for the auto_analyses.relax_disp_repeat_cpmg
module.  This was causing relax to fail.  SciPy is an optional
dependence for relax, but this module caused relax to not start if
scipy was not installed.  This was detected by testing relax with
PyPy.
        * Implemented writing out of particular correlation plots to
file.  Task #7826 (https://gna.org/task/index.php?7826): Write a
Python class for the repeated analysis of dispersion data.
        * Created a special internal structural object selection
object.  This will be used for massively speeding up the internal
structural object.  The use of the lib.selection module by the
internal structural object is currently very slow as a huge number of
calls to re.search() are required.  The idea is to avoid this by using
lib.selection once to populate this new selection object, and then
reusing this object to loop over molecules and atoms.
        * Added the selection() method to the internal structural
object.  This parses the atom ID string using the lib.selection
module, loops over the molecules and atoms, performs matches using
re.search() via lib.selection, and populates and returns the new
Internal_selection object.  This can be used to pre-process the atom
ID string to save huge amounts of time.
        * The internal structural object validate_models() method now
accepts the verbosity argument.  This is used to silence printouts.
        * Fixes for the new structural object Internal_selection
object.  The atom indices are not stored via the molecule index.
        * Converted the rotate() and translate() structural object
methods to use the new selection object.  The atom_id arguments have
been replaced with selection arguments.  Therefore all parts of relax
which call these methods must first call selection() to obtain the
Internal_selection instance.
        * Created the structural object Internal_selection.mol_loop()
method.  This is to simply quickly loop over all molecule indices of
the selection object.
        * Converted all structural object methods to use the selection
object rather that atom ID strings.  This should have a significant
impact on the speed of certain operations within relax.  The most
obvious effect will be a huge speed up of the interatom.define user
function.  There should be speed ups with a number of other user
functions relating to structural information.  All parts of relax have
been updated for the change.
        * Implemented the sampling sparseness instead of NI on the
graph axis.  Task #7826 (https://gna.org/task/index.php?7826): Write a
Python class for the repeated analysis of dispersion data.
        * Massive speed up of the internal structural object
add_model() method.  This speeds up the structure.add_model user
function, as well as many internal relax operations on the structural
object.  Instead of using the copy.deepcopy() function to duplicate an
already existing structural model, now new molecule container objects
are created and then the individual elements of the original molecule
container data lists are copied one by one.  This avoids copying a lot
of internal Python junk and hence the copying operation is now orders
of magnitude faster.
        * Created the new --no-skip relax command line option.  This
is a debugging option specifically designed for relax developers.  It
allows all blacklisted tests to be executed, i.e. all blacklists are
ignored.  These tests would normally be skipped, however this option
enables them.
        * Fix for the test suite summary printout function for the new
--no-skip option.  The relax status object was clashing with a
variable of the same name.
        * Reactivated the Relax_disp.test_m61b_data_to_m61b system
test, but blacklisted it.  This will allow the test to be executed if
the --no-skip command line option is used.
        * Created the Bmrb.test_bug_22703_display_empty system and GUI
test.  This system test catches bug #22703
(https://gna.org/bugs/?22703), the failure of the bmrb.display user
function with an AttributeError when no data is present.  It is
simultaneously a system and GUI test, as the GUI test class inherits
directly from the system test class.
        * Created the pipe_control.spectrometer.check_setup()
function.  This follows the design on the wiki page
http://wiki.nmr-relax.com/Relax_source_design.  This is for checking
if spectrometer information has been set up.
        * Created the RelaxNoFrqWarning warning class for warning that
no spectrometer information is present.
        * Renamed the pipe_control.spectrometer.check_setup() function
to check_spectrometer_setup().  This is so it can be used without
confusion outside of the module.
        * Fix for a broken elif block in the new
pipe_control.spectrometer.check_spectrometer_setup() function.
        * The model-free bmrb_write() API method now checks for
spectrometer information.  This is via a call to the
pipe_control.spectrometer.check_spectrometer_setup() function.
        * Modified the Bmrb.test_bug_22703_display_empty system/GUI
test to catch the RelaxNoFrqError.
        * Created a special Check class based on the strategy design
pattern.  This is in the new lib.checks module.  The class will be
used to simplify and unify all of the check_*() functions in the
pipe_control and specific_analyses packages.
        * Converted the pipe_control.spectrometer.check_*() functions
to the strategy design pattern.  These are now passed into the
lib.checks.Check object, and the original functions are now instances
of this class.
        * Alphabetical ordering of all functions in the
pipe_control.pipes module.
        * Changed the design of the Check object in lib.checks.  The
design of the checking function to call has been modified - it should
now return either None if the check passes or an instantiated
RelaxError object if not.  This is then used to determine if the
__call__() method should return True (when None is received).
Otherwise if escalate is set to 1, the text from the RelaxError object
is sent into a RelaxWarning and False is returned.  And if escalate is
set to 2, then the error object is simply raised.
        * Updated the pipe_control.spectrometer.check_*_func()
functions to use the new design.
        * Implemented the writing out of parameter values between
comparison of NI level.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Fixes for the lib.checks.Check object.  The __call__()
method keyword arguments **kargs needs to be processed inside the
method to strip out the escalate argument.
        * The default value of the escalate argument of the
Check.__call__() method is now 2.  This will cause the calls to the
check_*() function/objects to default to raising RelaxErrors.
        * Changed the behaviour of the lib.checks.Check object again.
This time the registered function is stored rather than converted into
a class instance method.  That way the check_*() function-like objects
do not need to accept the unused 'self' argument.
        * The data pipe testing function has been converted to the
strategy design pattern of the Check object.  The function
pipe_control.pipes.test() has also been renamed to check_pipe().
        * Created the Bmrb.test_bug_22704_corrupted_state_file system
test.  This is to catch bug #22704 (https://gna.org/bugs/?22704), the
corrupted relax state files after setting the relax references via the
bmrb.software, bmrb.display, or bmrb.write user functions.
        * Implemented getting the statistics for parameters and
comparing to init NI.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Implemented writing and plotting of statistics for
individual and clustered fitting, comparing to full NI.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Added checks to the Bmrb.test_bug_22704_corrupted_state_file
system test.  This is to see if the cdp.exp_info data structure has
been correctly restored from the save file.
        * Uncommented some checks in the
Bmrb.test_bug_22704_corrupted_state_file system test.
        * For relaxation dispersion, modified that the Grid search and
linear constraints for parameter "k_AB" is between 0-100.  The
parameter is only used in the TSMFK01 model.  The "k_AB" parameter is
only for very slow forward exchange rate.  The expected values should
according to the reference paper:   Tollinger, M., Skrynnikov, N. R.,
Mulder, F. A. A., Forman-Kay, J. D., and Kay, L. E. (2001).  Slow
dynamics in folded and unfolded states of an sh3 domain. J. Am. Chem.
Soc., 123(46), 11341-11352. (10.1021/ja011300z)  The paper concerns
values of k_AB in the region 0.1 to 5.0.  If the exchange rate is any
higher value of this, then another model should be used for the
analysis.
        * Set the default insignificance value to 0.0 instead of 1.0.
Task #7826 (https://gna.org/task/index.php?7826): Write a Python class
for the repeated analysis of dispersion data.
        * Modified the grid search limits for parameter "k_AB" to be
between 0.1 and 20.0 rad.s^-1.  This is for the TSMFK01 model, where
values much above 10/20 is not expected.
        * Implemented counting of outliers for statistics.  This is to
get a better feeling why some statistics are very much different
between NI.  Task #7826 (https://gna.org/task/index.php?7826): Write a
Python class for the repeated analysis of dispersion data.
        * Created the Structure.test_mean system test.  This is to
test the functionality of a planned new feature, the structure.mean
user function.  This is an analysis aid that will calculate the mean
structure from all loaded models.
        * Implemented the structure.mean user function frontend.  The
backend is currently just a stub function.
        * Fixes and simplifications for the
pipe_control.pipes.check_pipe() checking object.  One of the
RelaxError classes were not initialised and the docstring was
incorrect.
        * Created the pipe_control.structure.main.check_structure()
checking object.  This will be used for providing much more detailed
feedback for when structural information is missing.
        * Converted all of the pipe_control.structure.main functions
to use the check_structure() object.  This standardises and improves
all of the checks.
        * Some fixes and additional checks for the Structure.test_mean
system test.
        * Implemented the backend of the structure.mean user function.
This primarily occurs within the internal structural object in the new
mean() method.  The pipe_control.structure.main.mean() function simply
checks if the current data pipe is correctly set up and then calls the
structural object mean() method.
        * Created the Structure.test_align system test.  This will be
used to test the yet to be implemented structure.align user function.
This user function will be similar to the structure.superimpose user
function but will be designed so that structures with different
primary and atomic sequences can be superimposed.
        * Created the frontend of the structure.align user function.
This is almost the same as that of the structure.superimpose user
function except that the pipes argument has been added and the titles
and description changed to indicate the differences.
        * Registered the new user function argument type
'int_list_of_lists' in the prompt UI.  This is to allow for lists of
lists of integers, as used for the model argument in the new
structure.align user function.
        * Modified the lib.arg_check.is_int_list() function to accept
the list_of_lists Boolean argument.  This updates the function to have
the same functionality as is_str_list(), allows for lists of lists of
int to be checked.
        * Extended the Structure.test_align system test to throughly
check the structural data.  This includes changing the structure.align
user function call to use 'fit to first' and carefully checking the
new atomic coordinates.
        * Modified the Structure.test_align system test so that
translations and rotations match the algorithm.  This allows the
output of the structure.align user function to be checked to see if
the rotation matrix and translation vector found match that used to
shift the original structures.
        * Implemented the structure.align user function backend.  This
is similar to the structure.superimpose user function, however the
coordinate data structure only contains atoms which are in common to
all structures.
        * The pipe_control.structure.main functions translate() and
rotate() now accept the pipe_name argument.  This is used to translate
and rotate structures in different data pipes, as required by the
structure.align user function.
        * The pipe_control.structure.main.check_structure() checking
object now accepts the pipe_name argument.  This allows structural
data to be checked for in different data pipes without having to
switch to them.
        * Modified the Structure.test_align system test to call the
structure.write_pdb user function.  This sets the file name to
sys.stdout so that the original structure and the final aligned
structures are output to STDOUT for debugging purposes.
        * Created the Structure.test_delete_atom system test.  This is
used to test the deletion of a single atom using the structure.delete
user function.
        * Expanded the Structure.test_delete_atom system test.  This
is to show that the structure.write_pdb user function fails after a
call to the structure.delete user function to delete individual atoms.
        * Fix for the new structure.align user function.  The
translation and rotation of the structures at the end to the aligned
positions was being incorrectly performed.
        * Loosened some checks in the Structure.test_align system test
to allow it to pass.  Some self.assertEqual() checks for the atomic
coordinates have been replaced by self.assertAlmostEqual() to allow
for small machine precision differences.
        * Modified the lib.arg_check.is_str_or_inst() to handle
cStringIO objects.  This allows sys.stdout to be used as a file object
in the relax test suite.
        * Modified the lib.arg_check.is_str_or_inst() function to work
with Python 3.  Instead of checking for cStringIO.OutputType, which
does not exist in Python 3, the argument is simply checked to see if
it has a write() method.
        * Print out of the number of all R2eff points, if they are
different between analysis.  This can become an issue if a single
intensity point has slipped into noise, due to low quality of spectrum
reconstruction.  Task #7826 (https://gna.org/task/index.php?7826):
Write a Python class for the repeated analysis of dispersion data.
        * Implemented statistics for R2eff values.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Added data checks and printouts to the structure.align user
function.  The data checks are to prevent the user from attempting an
alignment with differently named molecules, as this will not work.
        * Implemented writing out intensity and error correlations
plot.  Task #7826 (https://gna.org/task/index.php?7826): Write a
Python class for the repeated analysis of dispersion data.
        * Implemented writing out of intensity statistics.  Task #7826
(https://gna.org/task/index.php?7826): Write a Python class for the
repeated analysis of dispersion data.
        * Expanded the structure.com user function to accept the
atom_id argument.  This allows the centre of mass (CoM) calculation to
be restricted to a certain subset of atoms.  The backend already had
support for this feature, but now it is exposed in the frontend.  The
user function docstring has been slightly modified as well.
        * Skipping of intensity calculation, if the intensity pipe
does not exists.  Task #7826 (https://gna.org/task/index.php?7826):
Write a Python class for the repeated analysis of dispersion data.
        * Added example CPMG data, which could possibly be sent for
BMRB submission.  The data is un-published CPMG data, related to the
paper:  Webb H, Tynan-Connolly BM, Lee GM, Farrell D, O'Meara F,
Soendergaard CR, Teilum K, Hewage C, McIntosh LP, Nielsen JE (2011).
Remeasuring HEWL pK(a) values by NMR spectroscopy: methods, analysis,
accuracy, and implications for theoretical pK(a) calculations.
Proteins: Struct., Funct., Bioinf. 79(3), 685-702, DOI
10.1002/prot.22886.  Task #7858 (https://gna.org/task/?7858): Make it
possible to submit CPMG experiments for BMRB.
        * Added system test Relax_disp.test_bmrb_sub_cpmg() to try
calling the bmrb functions in relax.  Task #7858
(https://gna.org/task/?7858): Make it possible to submit CPMG
experiments for BMRB.
        * Implemented the initial part of the API, to collect data for
BMRB submission.  Task #7858 (https://gna.org/task/?7858): Make it
possible to submit CPMG experiments for BMRB.
        * Inserted a "RelaxImplementError" when trying to call
bmrb_write from a relaxation dispersion analysis.  To implement the
function, it would require a re-write of the relax_data
bmrb_write(star) function, and proper handling of cdp.ri_ids.  It was
also not readily possible to find examples of submitted CPMG data in
the BMRB database.  This makes it hard to develop, and even ensure
that BMRB would accept the format.  Task #7858
(https://gna.org/task/?7858): Make it possible to submit CPMG
experiments for BMRB.
        * Removed the system test Relax_disp.test_bmrb_sub_cpmg() to
be tested in the test-suite.  This test will not be implemented, as it
requires a large re-write of data structures.  Task #7858
(https://gna.org/task/?7858): Make it possible to submit CPMG
experiments for BMRB.
        * Removed the showing of Matplotlib figures in the test suite.
Task #7826 (https://gna.org/task/index.php?7826): Write a Python class
for the repeated analysis of dispersion data.
        * Implemented system test Relax_disp.test_dx_map_clustered to
catch the missing creation of a point file.  Bug #22753
(https://gna.org/bugs/index.php?22753): dx.map does not work when only
1 point is used.
        * Inserted a check in system test
Relax_disp.test_dx_map_clustered, that a call to minimise.calculate
should be the same as the file stored with the clustered chi2 value.
Bug #22754 (https://gna.org/bugs/index.php?22754): The
minimise.calculate user function does not calculate chi2 value for
clustered residues.
        * Made initial preparation to loop over clustered spins and
IDs for the minimise.calculate user function call.  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Implemented looping over spin-clusters when issuing a
minimise.calculate().  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Made back_calc_r2eff() in optimisation module use the spin
and ID list instead.  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Fix for graph plotting functionality to send spins as list
of one spins.  Bug #22754 (https://gna.org/bugs/index.php?22754): The
minimise.calculate user function does not calculate chi2 value for
clustered residues.
        * Fix for calling back_calc_r2eff with the new argument
keywords, and use list of spin and spin IDs.  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Fix for synthetic script calling back_calc_r2eff() with old
arguments and to use list of spin containers and IDs.  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Inserted last test in test_dx_map_clustered, to check out
the written chi2 values are as expected.  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Moved the looping over cluster spin IDs into its own
function in the API.  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Added the selection string for all the cluster IDs to be
parsed back as well.  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Made the value set function, set values to all spins, if it
is a global parameter.  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Moved the skipping of protons away from looping function.
Bug #22754 (https://gna.org/bugs/index.php?22754): The
minimise.calculate user function does not calculate chi2 value for
clustered residues.
        * Inserted some testing lines for making a dx_map, either
global clustered or as a free spin.  There is a big difference which
dx map you get.  It illustrates beautifully the effect of clustering
things together.  Bug #22754 (https://gna.org/bugs/index.php?22754):
The minimise.calculate user function does not calculate chi2 value for
clustered residues.
        * Added a BMRB NMR-STAR formatted deposition file for the OMP
model-free data for reference.  This is because there are no other
NMR-STAR formatted files in the relax sources.
        * In the dispersion API calculate(), used the API function
model_loop() to loop over the clusters instead.  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Removed then function loop_cluster_ids() from dispersion
API().  This should be implemented elsewhere.  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Updated the API set_param_values() function to use
model_loop() to get the spin_ids from the cluster.  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Initial try to fix unit test test_value_set_r1_rit().  The
problem is that no spin ID can be generated since the spins are
created manually.  "AttributeError: 'MoleculeContainer' object has no
attribute '_res_name_count' ".  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Removed the checking of MODEL_LIST_MMQ, and spin.isotope
from optimisation.back_calc_r2eff(), since this check is already
covered.  Bug #22754 (https://gna.org/bugs/index.php?22754): The
minimise.calculate user function does not calculate chi2 value for
clustered residues.
        * Fix for references to "spin" in
optimisation.back_calc_r2eff().  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Fix for looping performed twice in relax_disp API
model_loop().  Bug #22754 (https://gna.org/bugs/index.php?22754): The
minimise.calculate user function does not calculate chi2 value for
clustered residues.
        * Removed unused proton reference in relax_disp API
calculate().  There is though some problems with these tests (F 1.93 s
for Relax_disp.test_korzhnev_2005_15n_dq_data, F 2.01 s for
Relax_disp.test_korzhnev_2005_1h_mq_data, F 1.93 s for
Relax_disp.test_korzhnev_2005_1h_sq_data).  It is unsure where these
comes from.  Bug #22754 (https://gna.org/bugs/index.php?22754): The
minimise.calculate user function does not calculate chi2 value for
clustered residues.
        * Fix for epydoc in system test Relax_disp.test_dx_map_clustered.
        * Updated all of the Relax_disp.test_korzhnev_2005_*_data
system tests.  These now have slightly changed parameter values due to
the fix of bug #22563 (https://gna.org/bugs/?22563), the NS MMQ 2-site
dispersion model running at 32-bit precision and not 64-bit as it
should be.
        * Epydoc change for DOI reference in system tests.  Bug #22754
(https://gna.org/bugs/index.php?22754): The minimise.calculate user
function does not calculate chi2 value for clustered residues.
        * Added some test PyMOL scripts to create OpenDX maps and chi2
surface plots.  These will go to the wiki:
http://wiki.nmr-relax.com/Chi2_surface_plot.
        * Big improvement for running the relax unit tests via the
relax command line options.  The unit test module path is now accepted
as a command line option.  This brings more capabilities of Gary
Thompson's test_suite/unit_tests/unit_test_runner.py script into the
relax command line.  The _pipe_control/test_value unit test module
path can be specified as, for example, one of
'test_suite.unit_tests._pipe_control.test_value',
'test_suite/unit_tests/_pipe_control/test_value',
'_pipe_control.test_value', '_pipe_control/test_value'.  This allows
individual modules of tests to be run, rather than having to execute
all unit tests, which is very useful for debugging.
        * Modified the printouts for the unit tests when running with
the --time command line option.  The test name is now being processed.
The leading 'test_suite.unit_tests.' text is now stripped out.  And
the remaining text is split into the module name and the test name.
This is to allow the unit test module name to be more easily
identifiable, so it can then be used as a command line option to allow
only a subset of tests to be performed.
        * Modified the help strings for the test suite options shown
when 'relax -h' is run.  The ability to specify individual tests (or
modules of tests for the unit tests) is now documented.  The '--time'
option help string has also been edited.
        * Fix for the Bmrb.test_bug_22704_corrupted_state_file GUI
test.  This was failing because the setUp() method in the inherited
Bmrb system test module was being overwritten by the default
Unittest.setUp() method.  Therefore the system test setUp() method has
been copied into the GUI test class.
        * Fix for the Test_value.test_value_set_r1_rit test of the
_pipe_control.test_value unit test module.  This is a general fix for
all unit test modules which use the
test_suite.unit_tests.value_testing_base.Value_testing_base base
class.  After the molecules, residues and spins are manually created,
the pipe_control.mol_res_spin.metadata_update() function is called to
make sure that all of the private and volatile metadata have been
correctly created, so that the other pipe_control.mol_res_spin module
functions can operate correctly.
        * Removal of repetitive code in the relaxation dispersion
model_loop() API method.  The spin loop does not need to be called
twice, instead the if statements have been modified to better direct
the code execution.
        * Added script to simulate dispersion profiles at different
settings.  This shows that something is wrong.  The back-calculated
values in the graphs are not equal to the interpolated values.  There
must be something wrong somewhere.  This list shows the chi2 values
and, judging from the dispersion graphs, this simply cannot be true.
        * Changed bounds for sample scripts to create: 3D iso-surface
plot, surface plot and simulation of dispersion curves.
        * Minor changes to Python matplotlib script, to produce
surface plot.  Also added the new data for the plotting.
        * Modified the example data, after issue with parameters was fixed.


    Bugfixes:
        * Fix for two-point calculation of exponential curve with
corrupted data.  The two-point calculation is now also skipped, if the
measured intensity is 0.  This can happen for corrupted intensity
files.
        * Fix for the internal structural object get_model() method -
it now actually returns the model.
        * Fixes for the structure.add_atom user function to allow for
list of lists for the atomic position.  This allows different
coordinates to be supplied for each model.
        * Added safety checks for NaN values to the
lib.structure.pdb_write module.  This is within the _record_validate()
function.  The check prevents the creation of invalid PDB files.
        * Fix for the experimental information data pipe object when
converting to XML state and results files.  This is a partial fix for
bug #22704 (https://gna.org/bugs/?22704), the corrupted relax state
files after setting the relax references via the bmrb.software,
bmrb.display, or bmrb.write user functions.  The names and
descriptions for the software, citation and script list objects were
incorrectly set.  These have been fixed so that the name of the data
structure and the real description is present in the XML state or
results file instead of <relax_list desc='relax list container'>.
        * Fix for the experimental information data pipe object when
converting to XML state and results files.  This is a partial fix for
bug #22704 (https://gna.org/bugs/?22704), the corrupted relax state
files after setting the relax references via the bmrb.software,
bmrb.display, or bmrb.write user functions.  The names and
descriptions for the software, citation and script list objects were
incorrectly set.  These have been fixed so that the name of the data
structure and the real description is present in the XML state or
results file instead of <relax_list desc='relax list container'>.
        * Fix for the cdp.exp_info.software data structure setup.
This is a partial fix for bug #22704 (https://gna.org/bugs/?22704),
the corrupted relax state files after setting the relax references via
the bmrb.software, bmrb.display, or bmrb.write user functions.  The
Element data container name was being replaced by the software name,
making it impossible to restore from the XML.
        * Implemented the cdp.exp_info.from_xml() method to correctly
restore the experimental info structure.  This fixes bug #22704
(https://gna.org/bugs/?22704), the corrupted relax state files after
setting the relax references via the bmrb.software, bmrb.display, or
bmrb.write user functions.  This custom ExpInfo.from_xml() method is
required to properly recreate the software, script and citation list
data structures of the cdp.exp_info data structure, as these are
special RelaxListType objects populated by Element objects (both from
data_store.data_classes).
        * Bug fix for the structure.delete user function.  When
individual atoms are deleted, the bonded atom data structure is no
correctly updated to remove the now non-existent atom.
        * Another bug fix for the structure.delete user function when
deleting individual atoms.  The bonded atom data structure consisting
of indices requires all indices after the deleted atom to be
decremented by 1.
        * Bug fix for the CONECT records created by the
structure.write_pdb user function.  The atom numbers inside the
structural object were being used for the CONECT records rather than
the atom numbers used within the PDB file.
        * Fix for writing out point files, when only one point is
used.  The code was testing for > 1 points to be present, before
writing out point files.  Bug #22753
(https://gna.org/bugs/index.php?22753): dx.map does not work when only
1 point is used.
        * Fix for bug #22563 (https://gna.org/bugs/?22563).  This is
the NS MMQ 2-site dispersion model running at 32-bit precision and not
64-bit as it should be.  The numpy.complex64 32-bit types have been
replaced by numpy.complex128 in the lib.dispersion.ns_mmq_2site
module.
        * Critical fix for k_AB not belonging to list of global
parameters.  k_AB was only changed to the spin of interest, but not
for the rest of the cluster.  When the parameter vector is assembled,
"assemble_param_vector(spins=spins)" it takes the global parameter
from spin 0.  Bug #22754 (https://gna.org/bugs/index.php?22754): The
minimise.calculate user function does not calculate chi2 value for
clustered residues.
        * Improvements for PDB creation in the relax library for out
of bounds structural coordinates.  The lib.structure.pdb_write module
atom() and hetatm() functions will now more gracefully handle atomic
coordinates which are outside of the PDB limits of [-999.999,
9999.999].  When such coordinates are encountered, instead of
producing a too long PDB line which does not pass the validation step,
the functions will set the coordinates to the boundary value.  This
will at least allow a valid PDB file to be created, despite the
warping of the coordinates.
        * Expanded the list of global dispersion parameters in the
set_param_values() API method.  This is a quick expansion of Troels'
fix for the k_AB parameter to allow for the release of relax 3.3.1.
This is a small part of the discussion at
http://thread.gmane.org/gmane.science.nmr.relax.scm/23948/focus=7188.



Related Messages


Powered by MHonArc, Updated Fri Oct 10 01:00:03 2014