[prev in list] [next in list] [prev in thread] [next in thread] 

List:       relax-commits
Subject:    r19817 - in /branches/relax_disp/specific_analyses/relax_disp: __init__.py parameters.py
From:       edward () nmr-relax ! com
Date:       2013-05-31 9:15:58
Message-ID: E1UiLRG-0004p2-CU () subversion ! gna ! org
[Download RAW message or body]

Author: bugman
Date: Fri May 31 11:15:58 2013
New Revision: 19817

URL: http://svn.gna.org/viewcvs/relax?rev=19817&view=rev
Log:
Fixes to the specific_analyses.relax_disp modules to add support for the CR72 \
dispersion model.

The parameters for the CR72 model are now both correct and correctly handled.


Modified:
    branches/relax_disp/specific_analyses/relax_disp/__init__.py
    branches/relax_disp/specific_analyses/relax_disp/parameters.py

Modified: branches/relax_disp/specific_analyses/relax_disp/__init__.py
URL: http://svn.gna.org/viewcvs/relax/branches/relax_disp/specific_analyses/relax_disp/__init__.py?rev=19817&r1=19816&r2=19817&view=diff
 ==============================================================================
--- branches/relax_disp/specific_analyses/relax_disp/__init__.py (original)
+++ branches/relax_disp/specific_analyses/relax_disp/__init__.py Fri May 31 11:15:58 \
2013 @@ -93,11 +93,13 @@
         self.PARAMS.add('r2eff', scope='spin', default=15.0, desc='The effective \
transversal relaxation rate', set='params', py_type=dict, \
grace_string='\\qR\\s2,eff\\N\\Q (rad.s\\S-1\\N)', err=True, sim=True)  \
self.PARAMS.add('i0', scope='spin', default=10000.0, desc='The initial intensity', \
py_type=dict, set='params', grace_string='\\qI\\s0\\Q', err=True, sim=True)  \
self.PARAMS.add('r2', scope='spin', default=15.0, desc='The transversal relaxation \
rate', set='params', py_type=list, grace_string='\\qR\\s2\\N\\Q (rad.s\\S-1\\N)', \
err=True, sim=True) +        self.PARAMS.add('pA', scope='spin', default=0.5, \
desc='The population for state A', set='params', py_type=float, \
grace_string='\qp\sA\N\Q', err=True, sim=True) +        self.PARAMS.add('pB', \
scope='spin', default=0.5, desc='The population for state B', set='params', \
py_type=float, grace_string='\qp\sB\N\Q', err=True, sim=True)  \
self.PARAMS.add('phi_ex', scope='spin', default=5.0, desc='The pA.pB.dw**2 value \
scaled by wH (phi_ex = pA * pB * Delta_omega**2 / omega_H**2)', set='params', \
py_type=float, grace_string='\\xF\\B\\sex\\N\\q (p\\sA\\N.p\\sB\\N.\\xDw\\B\\S2\\N / \
\\xw\\B\\sH\\N\\S2\\N)', err=True, sim=True) +        self.PARAMS.add('dw', \
scope='spin', default=0.0, desc='The chemical shift difference between states A and B \
(in ppm)', set='params', py_type=float, grace_string='\q\\xDw\f{}\Q (ppm)', err=True, \
sim=True)  self.PARAMS.add('kex', scope='spin', default=10000.0, desc='The exchange \
rate', set='params', py_type=float, grace_string='\\qk\\sex\\N\\Q (rad.s\\S-1\\N)', \
err=True, sim=True)  self.PARAMS.add('r2a', scope='spin', default=15.0, desc='The \
transversal relaxation rate for state A', set='params', py_type=float, \
grace_string='\\qR\\s2,A\\N\\Q (rad.s\\S-1\\N)', err=True, sim=True)  \
self.PARAMS.add('ka', scope='spin', default=10000.0, desc='The exchange rate from \
state A to state B', set='params', py_type=float, grace_string='\\qk\\sA\\N\\Q \
                (rad.s\\S-1\\N)', err=True, sim=True)
-        self.PARAMS.add('dw', scope='spin', default=1000.0, desc='The chemical shift \
difference between states A and B', set='params', py_type=float, \
                grace_string='\\q\\xDw\\f{}\\Q (Hz)', err=True, sim=True)
         self.PARAMS.add('params', scope='spin', desc='The model parameters', \
py_type=list)  
         # Add the minimisation data.
@@ -367,35 +369,30 @@
                 # Only use the parameters of the first spin of the cluster.
                 spin = spins[0]
                 for i in range(len(spin.params)):
-                    # R2 relaxation rate (from 1 to 40 s^-1).
-                    if spin.params[i] == 'r2':
+                    # R2 relaxation rates (from 1 to 40 s^-1).
+                    if spin.params[i] in ['r2', 'r2a']:
                         lower.append(1.0)
                         upper.append(40.0)
+
+                    # The population of state A.
+                    elif spin.params[i] == 'pA':
+                        lower.append(0.0)
+                        upper.append(1.0)
 
                     # The pA.pB.dw**2/wH**2 parameter.
                     elif spin.params[i] == 'phi_ex':
                         lower.append(1e-20)
                         upper.append(1e-17)
 
-                    # Exchange rate.
-                    elif spin.params[i] == 'kex':
-                        lower.append(1.0)
-                        upper.append(100000.0)
-
-                    # Transversal relaxation rate for state A.
-                    elif spin.params[i] == 'r2a':
-                        lower.append(1.0)
-                        upper.append(20.0)
-
-                    # Exchange rate from state A to state B.
-                    elif spin.params[i] == 'ka':
-                        lower.append(1.0)
-                        upper.append(100000.0)
-
                     # Chemical shift difference between states A and B.
                     elif spin.params[i] == 'dw':
                         lower.append(1.0)
                         upper.append(10000.0)
+
+                    # Exchange rates.
+                    elif spin.params[i] in ['kex', 'ka']:
+                        lower.append(1.0)
+                        upper.append(100000.0)
 
         # The full grid size.
         grid_size = 1
@@ -828,7 +825,7 @@
             params = []
             for i in range(cdp.spectrometer_frq_count):
                 params.append('r2')
-            params += ['r2a', 'ka', 'dw']
+            params += ['pa', 'dw', 'kex']
 
         # Invalid model.
         else:
@@ -1269,14 +1266,16 @@
     return_data_name_doc =  Desc_container("Relaxation dispersion curve fitting data \
type string matching patterns")  _table = uf_tables.add_table(label="table: \
dispersion curve-fit data type patterns", caption="Relaxation dispersion curve \
fitting data type string matching patterns.")  _table.add_headings(["Data type", \
                "Object name"])
-    _table.add_row(["Transversal relaxation rate", "'r2'"])
-    _table.add_row(["The pA.pB.dw**2/wH**2 parameter", "'phi_ex'"])
-    _table.add_row(["Exchange rate", "'kex'"])
-    _table.add_row(["Transversal relaxation rate for state A", "'r2a'"])
-    _table.add_row(["Exchange rate from state A to state B", "'ka'"])
-    _table.add_row(["Chemical shift difference between states A and B", "'dw'"])
+    _table.add_row(["Transversal relaxation rate (rad/s)", "'r2'"])
+    _table.add_row(["Transversal relaxation rate for state A (rad/s)", "'r2a'"])
+    _table.add_row(["Population of state A", "'pA'"])
+    _table.add_row(["Population of state B", "'pB'"])
+    _table.add_row(["The pA.pB.dw**2 parameter (ppm^2)", "'phi_ex'"])
+    _table.add_row(["Chemical shift difference between states A and B (ppm)", \
"'dw'"]) +    _table.add_row(["Exchange rate (rad/s)", "'kex'"])
+    _table.add_row(["Exchange rate from state A to state B (rad/s)", "'ka'"])
     _table.add_row(["Peak intensities (series)", "'intensities'"])
-    _table.add_row(["CPMG pulse train frequency (series)", "'cpmg_frqs'"])
+    _table.add_row(["CPMG pulse train frequency (series, Hz)", "'cpmg_frqs'"])
     return_data_name_doc.add_table(_table.label)
 
 

Modified: branches/relax_disp/specific_analyses/relax_disp/parameters.py
URL: http://svn.gna.org/viewcvs/relax/branches/relax_disp/specific_analyses/relax_disp/parameters.py?rev=19817&r1=19816&r2=19817&view=diff
 ==============================================================================
--- branches/relax_disp/specific_analyses/relax_disp/parameters.py (original)
+++ branches/relax_disp/specific_analyses/relax_disp/parameters.py Fri May 31 \
11:15:58 2013 @@ -116,8 +116,26 @@
                 else:
                     param_vector.append(spin.r2[i])
 
+            # Transversal relaxation rate for state A.
+            elif spin.params[i] == 'r2a':
+                if sim_index != None:
+                    param_vector.append(spin.r2a_sim[sim_index])
+                elif spin.r2a == None:
+                    param_vector.append(0.0)
+                else:
+                    param_vector.append(spin.r2a)
+
+            # The pA parameter.
+            elif spin.params[i] == 'pA':
+                if sim_index != None:
+                    param_vector.append(spin.pA_sim[sim_index])
+                elif spin.pA == None:
+                    param_vector.append(0.0)
+                else:
+                    param_vector.append(spin.pA)
+
             # The pA.pB.dw**2/wH**2 parameter.
-            if spin.params[i] == 'phi_ex':
+            elif spin.params[i] == 'phi_ex':
                 if sim_index != None:
                     param_vector.append(spin.phi_ex_sim[sim_index])
                 elif spin.phi_ex == None:
@@ -125,6 +143,15 @@
                 else:
                     param_vector.append(spin.phi_ex)
 
+            # Chemical shift difference between states A and B.
+            elif spin.params[i] == 'dw':
+                if sim_index != None:
+                    param_vector.append(spin.dw_sim[sim_index])
+                elif spin.dw == None:
+                    param_vector.append(0.0)
+                else:
+                    param_vector.append(spin.dw)
+
             # Exchange rate.
             elif spin.params[i] == 'kex':
                 if sim_index != None:
@@ -134,32 +161,14 @@
                 else:
                     param_vector.append(spin.kex)
 
-            # Transversal relaxation rate for state A.
-            if spin.params[i] == 'r2a':
-                if sim_index != None:
-                    param_vector.append(spin.r2a_sim[sim_index])
-                elif spin.r2a == None:
-                    param_vector.append(0.0)
-                else:
-                    param_vector.append(spin.r2a)
-
             # Exchange rate from state A to state B.
-            if spin.params[i] == 'ka':
+            elif spin.params[i] == 'ka':
                 if sim_index != None:
                     param_vector.append(spin.ka_sim[sim_index])
                 elif spin.ka == None:
                     param_vector.append(0.0)
                 else:
                     param_vector.append(spin.ka)
-
-            # Chemical shift difference between states A and B.
-            if spin.params[i] == 'dw':
-                if sim_index != None:
-                    param_vector.append(spin.dw_sim[sim_index])
-                elif spin.dw == None:
-                    param_vector.append(0.0)
-                else:
-                    param_vector.append(spin.dw)
 
     # Return a numpy array.
     return array(param_vector, float64)
@@ -220,28 +229,24 @@
         spin = spins[0]
         for i in range(len(spin.params)):
             # Transversal relaxation rate scaling.
-            if spin.params[i] == 'r2':
+            if spin.params[i] in ['r2', 'r2a']:
                 scaling_matrix[param_index, param_index] = 10
+
+            # The population of state A.
+            elif spin.params[i] == 'pA':
+                scaling_matrix[param_index, param_index] = 1
 
             # The pA.pB.dw**2/wH**2 parameter.
             elif spin.params[i] == 'phi_ex':
                 scaling_matrix[param_index, param_index] = 1e-18
 
-            # Exchange rate scaling.
-            elif spin.params[i] == 'kex':
-                scaling_matrix[param_index, param_index] = 10000
-
-            # Transversal relaxation rate for state A scaling
-            elif spin.params[i] == 'r2a':
-                scaling_matrix[param_index, param_index] = 10
-
-            # Exchange rate from state A to state B scaling.
-            elif spin.params[i] == 'ka':
-                scaling_matrix[param_index, param_index] = 10000
-
             # Chemical shift difference between states A and B scaling.
             elif spin.params[i] == 'dw':
-                scaling_matrix[param_index, param_index] = 1000
+                scaling_matrix[param_index, param_index] = 1
+
+            # Exchange rate scaling.
+            elif spin.params[i] in ['kex', 'ka']:
+                scaling_matrix[param_index, param_index] = 10000
 
             # Increment the parameter index.
             param_index += 1
@@ -346,6 +351,20 @@
                     else:
                         spin.r2[i] = param_vector[param_index]
 
+                # Transversal relaxation rate for state A.
+                if spin.params[i] == 'r2a':
+                    if sim_index != None:
+                        spin.r2a_sim[sim_index] = param_vector[param_index]
+                    else:
+                        spin.r2a = param_vector[param_index]
+
+                # The population of state A.
+                if spin.params[i] == 'pA':
+                    if sim_index != None:
+                        spin.pA_sim[sim_index] = param_vector[param_index]
+                    else:
+                        spin.pA = param_vector[param_index]
+
                 # The pA.pB.dw**2/wH**2 parameter.
                 if spin.params[i] == 'phi_ex':
                     if sim_index != None:
@@ -353,6 +372,13 @@
                     else:
                         spin.phi_ex = param_vector[param_index]
 
+                # Chemical shift difference between states A and B.
+                if spin.params[i] == 'dw':
+                    if sim_index != None:
+                        spin.dw_sim[sim_index] = param_vector[param_index]
+                    else:
+                        spin.dw = param_vector[param_index]
+
                 # Exchange rate.
                 elif spin.params[i] == 'kex':
                     if sim_index != None:
@@ -360,13 +386,6 @@
                     else:
                         spin.kex = param_vector[param_index]
 
-                # Transversal relaxation rate for state A.
-                if spin.params[i] == 'r2a':
-                    if sim_index != None:
-                        spin.r2a_sim[sim_index] = param_vector[param_index]
-                    else:
-                        spin.r2a = param_vector[param_index]
-
                 # Exchange rate from state A to state B.
                 if spin.params[i] == 'ka':
                     if sim_index != None:
@@ -374,13 +393,6 @@
                     else:
                         spin.ka = param_vector[param_index]
 
-                # Chemical shift difference between states A and B.
-                if spin.params[i] == 'dw':
-                    if sim_index != None:
-                        spin.dw_sim[sim_index] = param_vector[param_index]
-                    else:
-                        spin.dw = param_vector[param_index]
-
                 # Increment the parameter index.
                 param_index = param_index + 1
 
@@ -394,12 +406,14 @@
     The different constraints are::
 
         R2 >= 0
-        Rex >= 0
+        R2 <= -200
+        R2A >= 0
+        pA >= 0
+        pA >= pB
+        phi_ex >= 0
+        dw >= 0
         kex >= 0
-
-        R2A >= 0
         kA >= 0
-        dw >= 0
 
 
     Matrix notation
@@ -407,19 +421,23 @@
 
     In the notation A.x >= b, where A is a matrix of coefficients, x is an array of \
parameter values, and b is a vector of scalars, these inequality constraints are::  
-        | 1  0  0 |     |  R2  |      |    0    |
-        |         |     |      |      |         |
-        |-1  0  0 |     |  R2  |      |  -200   |
-        |         |     |      |      |         |
-        | 1  0  0 |     |  phi |      |    0    |
-        |         |     |      |      |         |
-        | 1  0  0 |  .  |  kex |  >=  |    0    |
-        |         |     |      |      |         |
-        | 1  0  0 |     |  R2A |      |    0    |
-        |         |     |      |      |         |
-        | 1  0  0 |     |  kA  |      |    0    |
-        |         |     |      |      |         |
-        | 1  0  0 |     |  dw  |      |    0    |
+        | 1  0  0 |     |   R2   |      |    0    |
+        |         |     |        |      |         |
+        |-1  0  0 |     |   R2   |      |  -200   |
+        |         |     |        |      |         |
+        | 1  0  0 |     |  R2A   |      |    0    |
+        |         |     |        |      |         |
+        | 1  0  0 |     |   pA   |      |    0    |
+        |         |     |        |      |         |
+        | 2  0  0 |  .  |   pA   |  >=  |    1    |
+        |         |     |        |      |         |
+        | 1  0  0 |     | phi_ex |      |    0    |
+        |         |     |        |      |         |
+        | 1  0  0 |     |   dw   |      |    0    |
+        |         |     |        |      |         |
+        | 1  0  0 |     |  kex   |      |    0    |
+        |         |     |        |      |         |
+        | 1  0  0 |     |   kA   |      |    0    |
 
 
     @keyword spins:             The list of spin data containers for the block.
@@ -463,8 +481,8 @@
         # Only use the parameters of the first spin of the cluster.
         spin = spins[0]
         for k in range(len(spin.params)):
-            # The transversal relaxation rate >= 0.
-            if spin.params[k] == 'r2':
+            # The transversal relaxation rates (0 <= r2 <= 200).
+            if spin.params[k] in ['r2', 'r2a']:
                 A.append(zero_array * 0.0)
                 A.append(zero_array * 0.0)
                 A[j][i] = 1.0
@@ -473,25 +491,32 @@
                 b.append(-200.0 / scaling_matrix[i, i])
                 j += 2
 
-            # Relaxation rates and phi_ex.
-            elif spin.params[k] in ['r2a', 'phi_ex']:
-                # phi_ex, R2A >= 0.
+            # The population of state A (pA >= 0 and pA >= pB).
+            elif spin.params[k] == 'pA':
+                A.append(zero_array * 0.0)
+                A.append(zero_array * 0.0)
+                A[j][i] = 1.0
+                A[j+1][i] = 2.0
+                b.append(0.0)
+                b.append(1.0 / scaling_matrix[i, i])
+                j += 2
+
+            # The pA.pB.dw**2/wH**2 parameter (phi_ex >= 0).
+            elif spin.params[k] == 'phi_ex':
                 A.append(zero_array * 0.0)
                 A[j][i] = 1.0
                 b.append(0.0)
                 j += 1
 
-            # Exchange rates.
-            elif search('^k', spin.params[k]):
-                # kex, kA >= 0.
+            # Chemical exchange difference (dw >= 0).
+            elif spin.params[k] == 'dw':
                 A.append(zero_array * 0.0)
                 A[j][i] = 1.0
                 b.append(0.0)
                 j += 1
 
-            # Chemical exchange difference.
-            elif spin.params[k] == 'dw':
-                # dw >= 0.
+            # Exchange rates (k >= 0).
+            elif spin.params[k] in ['kex', 'ka']:
                 A.append(zero_array * 0.0)
                 A[j][i] = 1.0
                 b.append(0.0)


_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-commits mailing list
relax-commits@gna.org

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic