Menu

SVN archive Commit Log


Commit Date  
[r23887] by bugman

Speed up and simplifications for the vector calculations used for the PCS numerical integration.

This has a minimal effect on the total speed as the target function calc_vectors() method is not the
major bottleneck - the slowest part is the quasi-random numerical integration. However the changes
may be useful for speeding up the integration later on.

The 3D pivot point, average domain rotation pivot, and paramagnetic centre position arrays are now
converted into rank-2 arrays in __init__() where the first dimension corresponds to the spin. Each
element is a copy of the 3D array.

These are then used for the calculation of the pivot to atom vectors, eliminating the looping over
spins. The numpy add() and subtract() ufuncs are used together with the out argument for speed and
to avoid temporary data structure creation and deletion. The end result is that the calculated
vector structure is transposed, so the first dimension are the spins.

The changes required minor updates to a number of system tests. The target functions themselves had
to be modified so that the pivot is converted to the larger structure when optimised, or aliased.

2014-06-12 17:44:47 Tree
[r23886] by bugman

Simplification and clean up of the RDC and PCS flags in the frame order target functions.

The per-alignment flags have been removed and replaced by a global flag for all data. This
accidentally fixes a bug when only RDCs are present, as the calc_vectors() method was being called
when it should not have been.

2014-06-12 16:47:36 Tree
[r23885] by bugman

Modified the CaM frame order system test base script to test alternative code paths.

This pivot point was fixed in all tests, so the code in the target functions behind the pivot_opt
flag was not being tested. Now for those system tests whereby the calc rather than minimise user
function is called, the pivot is no longer fixed to execute this code.

2014-06-12 14:40:15 Tree
[r23884] by bugman

Removed the setting of the second pivot point in the CaM frame order system tests.

The second pivot point has been removed from the double rotor frame order model to eliminate
parameter redundancy, so no models now have a conventional second pivot.

2014-06-12 14:00:22 Tree
[r23883] by bugman

Removed the structure loading and transformation from the CaM frame order system tests.

This was mimicking the old behaviour of the auto-analysis. However as that behaviour has been
shifted into the backend of the frame_order.pdb_model user function, which is called by these system
tests as well, the code is now redundant and is wasting test suite time.

2014-06-12 13:57:22 Tree
[r23882] by bugman

Merged revisions 23881 via svnmerge from
svn+ssh://bugman@.../svn/relax/trunk

........
r23881 | bugman | 2014-06-12 14:47:31 +0200 (Thu, 12 Jun 2014) | 8 lines

Better handling of the control-C keyboard interrupt signal in the relax test suite.

This includes two changes. The Python 2.7 and higher unittest.installHandler() function is now
called, when present, to terminate all tests using the unittest module control-C handler. The
second change is that the keyboard interrupt signal is caught in a try-except statement, a message
printed out, and the tests terminated. This should be an improvement for all systems.
........

2014-06-12 13:29:14 Tree
[r23881] by bugman

Better handling of the control-C keyboard interrupt signal in the relax test suite.

This includes two changes. The Python 2.7 and higher unittest.installHandler() function is now
called, when present, to terminate all tests using the unittest module control-C handler. The
second change is that the keyboard interrupt signal is caught in a try-except statement, a message
printed out, and the tests terminated. This should be an improvement for all systems.

2014-06-12 12:47:31 Tree
[r23880] by tlinnet

Large increase in speed for model TSMFK01 by changing target functions to use multidimensional numpy arrays in calculation.

This is done by restructuring data into multidimensional arrays of dimension [NE][NS][NM][NO][ND], which are
number of spins, number of magnetic field strength, number of offsets, maximum number of dispersion point.

The speed comes from using numpy ufunc operations.

The new version is 2.4X as fast per spin calculation, and 54X as fast for clustered analysis.

The different in timings for 3 spectrometer frequencies, calculated for 1 spin or 100 clustered spins with 1000 iterations are:

----
VERSION 3.2.2
----
1 spin:
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.262 0.262 <string>:1(<module>)
100 spin:
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 25.391 25.391 <string>:1(<module>)
----
New version
---

1 spin:
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.111 0.111 <string>:1(<module>)
100 spin:
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.468 0.468 <string>:1(<module>)

Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion models for Clustered analysis.

2014-06-12 11:56:12 Tree
[r23879] by bugman

Fix for the Frame_order.test_rigid_data_to_free_rotor_model system test.

As the free rotor has undergone a reparameterisation, the chi-squared value is now higher. The
value is reasonable as the free rotor can never model the rigid system.

2014-06-12 11:55:35 Tree
[r23878] by bugman

Fix for the PDB representation generated by frame_order.pdb_model for the free rotor pseudo-ellipse.

2014-06-12 11:52:26 Tree
Older >
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.