Author: bugman Date: Sat Feb 19 15:39:47 2011 New Revision: 12589 URL: http://svn.gna.org/viewcvs/relax?rev=12589&view=rev Log: Fix for the diffusion tensor module. This was also destroyed in the merger of the bmrb branch. Modified: 1.3/generic_fns/diffusion_tensor.py Modified: 1.3/generic_fns/diffusion_tensor.py URL: http://svn.gna.org/viewcvs/relax/1.3/generic_fns/diffusion_tensor.py?rev=12589&r1=12588&r2=12589&view=diff ============================================================================== --- 1.3/generic_fns/diffusion_tensor.py (original) +++ 1.3/generic_fns/diffusion_tensor.py Sat Feb 19 15:39:47 2011 @@ -26,8 +26,9 @@ # Python module imports. from copy import deepcopy from math import cos, pi, sin -from numpy.linalg import eig, norm from numpy import cross, float64, int32, ones, transpose, zeros +from numpy.linalg import norm, svd +from operator import itemgetter from re import search import string @@ -1754,17 +1755,27 @@ """ # Eigenvalues. - Di, R = eig(tensor) + R, Di, A = svd(tensor) + D_diag = zeros((3, 3), float64) + for i in range(3): + D_diag[i, i] = Di[i] # Reordering structure. + tup_struct = [] + for i in range(3): + tup_struct.append((i, Di[i])) + + # The indices. + reorder_data = sorted(tup_struct, key=itemgetter(1)) reorder = zeros(3, int) - Di_sort = sorted(Di) - Di = Di.tolist() + Di_sort = zeros(3, float) + for i in range(3): + reorder[i], Di_sort[i] = reorder_data[i] + + # Reorder columns. R_new = zeros((3, 3), float64) - - # Reorder columns. for i in range(3): - R_new[:, i] = R[:, Di.index(Di_sort[i])] + R_new[:, i] = R[:, reorder[i]] # Switch from the left handed to right handed universes (if needed). if norm(cross(R_new[:, 0], R_new[:, 1]) - R_new[:, 2]) > 1e-7: