Author: bugman Date: Wed Mar 10 16:59:32 2010 New Revision: 10962 URL: http://svn.gna.org/viewcvs/relax?rev=10962&view=rev Log: The diffusion tensor within the PDB frame can now be specified. This avoids all Euler angle convention problems. -This line, and those below, will be ignored-- M prompt/diffusion_tensor.py M generic_fns/diffusion_tensor.py Modified: 1.3/generic_fns/diffusion_tensor.py 1.3/prompt/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=10962&r1=10961&r2=10962&view=diff ============================================================================== --- 1.3/generic_fns/diffusion_tensor.py (original) +++ 1.3/generic_fns/diffusion_tensor.py Wed Mar 10 16:59:32 2010 @@ -26,6 +26,8 @@ # Python module imports. from copy import deepcopy from math import cos, pi, sin +from numpy import float64, zeros +from numpy.linalg import eig from re import search # relax module imports. @@ -33,6 +35,7 @@ from data.diff_tensor import DiffTensorData from generic_fns import pipes from generic_fns.angles import fold_spherical_angles +from maths_fns.rotation_matrix import R_to_euler_zyz from relax_errors import RelaxError, RelaxNoTensorError, RelaxStrError, RelaxTensorError, RelaxUnknownParamCombError, RelaxUnknownParamError @@ -348,6 +351,32 @@ # Set the parameters. set(value=[Dx, Dy, Dz], param=['Dx', 'Dy', 'Dz']) + + # (Dxx, Dyy, Dzz, Dxy, Dxz, Dyz). + elif param_types == 3: + # Unpack the tuple. + Dxx, Dyy, Dzz, Dxy, Dxz, Dyz = params + + # Build the tensor. + tensor = zeros((3, 3), float64) + tensor[0, 0] = Dxx + tensor[1, 1] = Dyy + tensor[2, 2] = Dzz + tensor[0, 1] = tensor[1, 0] = Dxy + tensor[0, 2] = tensor[2, 0] = Dxz + tensor[1, 2] = tensor[2, 1] = Dyz + + # Scaling. + tensor = tensor * d_scale + + # Eigenvalues. + Di, R = eig(tensor) + + # Euler angles. + alpha, beta, gamma = R_to_euler_zyz(R) + + # Set the parameters. + set(value=[Di[0], Di[1], Di[2]], param=['Dx', 'Dy', 'Dz']) # Unknown parameter combination. else: Modified: 1.3/prompt/diffusion_tensor.py URL: http://svn.gna.org/viewcvs/relax/1.3/prompt/diffusion_tensor.py?rev=10962&r1=10961&r2=10962&view=diff ============================================================================== --- 1.3/prompt/diffusion_tensor.py (original) +++ 1.3/prompt/diffusion_tensor.py Wed Mar 10 16:59:32 2010 @@ -298,6 +298,7 @@ 0: {tm, Da, Dr, alpha, beta, gamma} (Default), 1: {Diso, Da, Dr, alpha, beta, gamma}, 2: {Dx, Dy, Dz, alpha, beta, gamma}, + 3: {Dxx, Dyy, Dzz, Dxy, Dxz, Dyz}, where @@ -321,6 +322,9 @@ 0 <= theta <= pi, 0 <= phi <= 2pi. + + When param_types is set to 3, then the elements of the diffusion tensor matrix defined + within the PDB frame can be supplied. Units