mailr27151 - /trunk/pipe_control/structure/main.py


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

Header


Content

Posted by edward on December 22, 2014 - 09:19:
Author: bugman
Date: Mon Dec 22 09:19:50 2014
New Revision: 27151

URL: http://svn.gna.org/viewcvs/relax?rev=27151&view=rev
Log:
Proper implementation of the 'parallax shift' for the 
structure.atomic_fluctuations user function.


Modified:
    trunk/pipe_control/structure/main.py

Modified: trunk/pipe_control/structure/main.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/pipe_control/structure/main.py?rev=27151&r1=27150&r2=27151&view=diff
==============================================================================
--- trunk/pipe_control/structure/main.py        (original)
+++ trunk/pipe_control/structure/main.py        Mon Dec 22 09:19:50 2014
@@ -21,7 +21,7 @@
 
 # Python module imports.
 from minfx.generic import generic_minimise
-from numpy import array, average, float64, std, zeros
+from numpy import array, average, dot, float64, std, zeros
 from numpy.linalg import norm
 from os import F_OK, access, getcwd
 from re import search
@@ -335,9 +335,22 @@
                 # The average vector.
                 ave_vect = average(vectors, axis=0)
 
+                # Catch the zero vector.
+                length = norm(ave_vect)
+                if length == 0.0:
+                    matrix[i, j] = matrix[j, i] = 0.0
+                    continue
+
+                # The unit average vector.
+                unit = ave_vect / length
+
                 # The parallax shift.
                 for k in range(m):
-                    dist[k] = norm(vectors[k] - ave_vect)
+                    # The projection onto the average vector.
+                    proj = dot(vectors[k], unit) * unit
+
+                    # The distance shift.
+                    dist[k] = norm(vectors[k] - proj)
 
                 # Calculate and store the corrected sample standard 
deviation.
                 matrix[i, j] = matrix[j, i] = std(dist, ddof=1)




Related Messages


Powered by MHonArc, Updated Mon Dec 22 11:00:03 2014