mailr10962 - in /1.3: generic_fns/diffusion_tensor.py prompt/diffusion_tensor.py


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

Header


Content

Posted by edward on March 10, 2010 - 16:59:
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




Related Messages


Powered by MHonArc, Updated Wed Mar 10 17:40:02 2010