relax version 3.1.4.
Posted by Edward d'Auvergne on January 31, 2014 - 15:08:
This is a minor feature and bugfix release which has improvements for
the handling of structural data involving multiple molecules or models
and improved support in the NOE analysis for replicated spectra.
Included are fixes for the failure of the
structure.create_diff_tensor_pdb user function for non-spherical
diffusion tensors when no Monte Carlo simulations are present and for
the failure of the rdc.write user function for back calculated RDC
data. Full details are given below.
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,
The full list of changes is:
* The structure.write_pdb user function now supports multiple
molecules being present.
* Large speed optimisations for the internal structural object
when multiple models are present.
* Improved support for replicated spectra in the NOE analysis.
* Created the Frame_order.test_generate_rotor2_distribution
system test. This is to test the Frame Order distribution generating
base script, used for creating the synthetic Frame Order test data,
and to demonstrate a failure in handling back-calculated RDC data. To
implement this, the test_suite/shared_data/frame_order/cam/ path has
been converted into a Python package (with the addition of the
__init__.py files). The base data generation script
test_suite/shared_data/frame_order/cam/generate_base.py has also been
modified to use the absolute path for the data files and its run()
method now accepts the save_path argument to allow the files to be
saved into a temporary directory.
* Fixes for the Frame_order.test_generate_rotor2_distribution
system test. The
test_suite/shared_data/frame_order/cam/generate_base.py script now
saves the program state files into the self.save_path directory,
preventing the system test from attempting to save files into the
relax test suite directories.
* Another fix for the
Frame_order.test_generate_rotor2_distribution system test. The
test_suite/shared_data/frame_order/cam/generate_base.py script no
longer prints its progress indicator to sys.__stderr__ but to
sys.stderr instead. This avoids the progress text from appearing
during the relax test suite execution.
* Created the
Structure.test_bug_21522_master_record_atom_count system test. This
is designed to catch bug #21522 (https://gna.org/bugs/?21522), the
structure.write_pdb user function creating an incorrect MASTER record.
This hence also catches bug #21520 (https://gna.org/bugs/?21520), the
failure of the structure.write_pdb user function when creating the
MASTER record due to too many ATOM and HETATM records being present.
The test simply creates two structural models, adds one atom, and
writes out a PDB file, checking its contents.
* The structure.write_pdb user function can now handle a file
instance for the file argument. This is for the
Structure.test_bug_21522_master_record_atom_count system test, to
allow a dummy file object to be used. This can also be useful for
* Created the lib.geometry.vectors.unit_vector_from_2point()
function. This is used to quickly calculate the unit vector between
* The lib.structure.represent.rotor.rotor_pdb() function can
now handle multiple rotors. Previously this function would fail if
called twice with the same structural object.
* Added the has_molecule() method to the relax internal
structural object. This is used to quickly check if a molecule name
already exists in the structural object.
* More improvements for handling multiple rotors in the
lib.structure.represent.rotor.rotor_pdb() function. The atom
numbering is now better handled.
* Better support for the writing out of multiple molecules by
the structure.write_pdb user function. This is for the internal
structural object write_pdb() method. Now each molecule is assigned a
different chain ID in the PDB file, and the chain IDs loaded into the
structural object are ignored. The chain IDs should however be
preserved when using structure.read_pdb followed by
structure.write_pdb, without storing the ID. A number of the
Structure system tests had to be updated, as now the relax generated
PDB files will always write out a chain ID.
* Large speed up for the internal structural object for when
many models are present. The new ModelList.current_models object
keeps track of all the models already present in the structural
object. This simplifies the checks of the pack_structs() internal
structural object method by removing expensive looping. This allows
the loading of PDB files to continue to be fast even with many tens or
hundreds of thousands of models already loaded.
* More speed ups for the internal structural object when huge
numbers of models are present. Another loop over the structural_data
object has been eliminated from the PDB reading load_pdb() method.
* Another optimisation for the internal structural object for
large numbers of models. The ModelList.add_item() method no longer
loops over all models to check if a model is already present, instead
using the new current_models list.
* Yet more optimisation for handling large quantities of
models in the internal structural model. Now when adding new models
to the object, the model_indices and model_list objects are no longer
created. This saves much time as the large model_list is now not
sorted. A number of structural object methods have been updated to
handle the change by switching to the model_loop() method for looping
over the models, rather than using the model_indices and model_list
* The frame order matrix printing function can now output the
matrix to any precision. The
lib.frame_order.format.print_frame_order_2nd_degree() function now
accepts the 'places' argument which allows for higher precision
* The behaviour of the rdc.write user function has been
changed to output spin ID strings in single quotes. This is to avoid
problems with the '#' molecule identifier and the '#' comment
* Fix for the diffusion_tensor.init user function reference in
the intro chapter of the manual. This was using a very old and now
* Created the
Diffusion_tensor.test_bug_21561_tensor_pdb_failure system test. This
is to catch bug #21561 (https://gna.org/bugs/?21561), as reported by
Martin Ballaschk (https://gna.org/users/mab). This catches the
failure of the structure.create_diff_tensor_pdb user function for
non-spherical diffusion tensors when no Monte Carlo simulations are
* Added the truncated data for creating a system test to catch
bug #21562. This bug (https://gna.org/bugs/?21562) was reported by
Dhanas Muthu (https://gna.org/users/dhanas) and is the failure of the
NOE analysis when spectra are replicated. This consists of the Sparky
peak lists attached to the bug report and the modified 2AT7 PDB file.
The data has been truncated to only include residues :12, :13, and
* Shifted the NOE system test script into the new 'noe' directory.
* Created the Noe.test_bug_21562_noe_replicate_fail system
test. This is to catch bug #21562 (https://gna.org/bugs/?21562),
reported by Dhanas Muthu (https://gna.org/users/dhanas). This is the
failure of the NOE analysis when spectra are replicated. This uses
the truncated data taken from the files attached to the bug report.
The NOE output file is checked to see if the contents are correct.
* Better support for replicated spectra in the NOE analysis.
The saturated and reference peak intensity and error are now properly
averaged. Previously averaging was not used as the number of
replicates N are cancelled in the ratios used for the NOE and error
calculation. However this fails when the number of replicates for the
saturated spectrum does not match the number of replicates for the
reference spectrum. Now any data combination is possible.
* Another fix for the NOE analysis for when replicated spectra
have been collected. Variance averaging rather than error averaging
is now used for the peak intensity errors. This is important if the
errors for each replicated spectra are different - a case which is
rarely encountered as the replicates are almost always used to
determine one error for all the replicates.
* Fix for bug #21499 (https://gna.org/bugs/?21499), the
failure of the rdc.write user function. The rdc.write user function
fails for back-calculated RDC data. The fix was to handle the missing
* Fix for bug #21522 (https://gna.org/bugs/?21522) and bug
#21520 (https://gna.org/bugs/?21520). These bugs are the
structure.write_pdb user function creating an incorrect MASTER record
and the failure of the structure.write_pdb user function when creating
the MASTER record due to too many ATOM and HETATM records being
present. The counts for the ATOM, HETATM, and TER records are now
only for a single model, rather than being the sum for all models
* Fix for bug #21561, the structure.create_diff_tensor_pdb
user function failure with no simulations. Bug #21561
(https://gna.org/bugs/?21561) was reported by Martin Ballaschk
(https://gna.org/users/mab). The problem was that the simulation axes
of the tensor PDB file were not being initialised correctly when no
Monte Carlo simulations had been run.
* Fix for bug #21562, the failure of the NOE analysis when
spectra are replicated. This bug (https://gna.org/bugs/?21562) was
reported by Dhanas Muthu (https://gna.org/users/dhanas). The problem
was that the NOE overfit_deselect() method was deselecting all spins
which do not have exactly 2 intensity values. This is incompatible
with replicated spectra as the number will be greater than two. The
check has been modified to deselect spins only when the number of
intensity values are zero or one.
Powered by MHonArc
, Updated Tue Feb 04 23:20:02 2014