Author: bugman
Date: Thu Aug 21 14:52:25 2014
New Revision: 25166
URL: http://svn.gna.org/viewcvs/relax?rev=25166&view=rev
Log:
Converted the relaxation dispersion target function class to the unified 'No
Rex' model design.
On top of removing all references to MODEL_NOREX_R1RHO, the aliasing of
self.func now checks the
experiment type list to determine which target function to use. This is not an
ideal solution and
will not handle mixed CPMG and R1rho experiment, however neither will the
target functions yet.
The creation of the off-resonance data structures has also been modified so
that they are now R1rho
independent. This allows the structures to be properly created while at the
same time enabling this
code to be compatible with off-resonance CPMG data in the future.
Modified:
trunk/target_functions/relax_disp.py
Modified: trunk/target_functions/relax_disp.py
URL:
http://svn.gna.org/viewcvs/relax/trunk/target_functions/relax_disp.py?rev=25166&r1=25165&r2=25166&view=diff
==============================================================================
--- trunk/target_functions/relax_disp.py (original)
+++ trunk/target_functions/relax_disp.py Thu Aug 21 14:52:25 2014
@@ -55,7 +55,7 @@
from lib.errors import RelaxError
from lib.float import isNaN
from target_functions.chi2 import chi2_rankN
-from specific_analyses.relax_disp.variables import EXP_TYPE_CPMG_DQ,
EXP_TYPE_CPMG_MQ, EXP_TYPE_CPMG_PROTON_MQ, EXP_TYPE_CPMG_PROTON_SQ,
EXP_TYPE_CPMG_SQ, EXP_TYPE_CPMG_ZQ, EXP_TYPE_LIST_CPMG, EXP_TYPE_R1RHO,
MODEL_B14, MODEL_B14_FULL, MODEL_CR72, MODEL_CR72_FULL, MODEL_DPL94,
MODEL_IT99, MODEL_LIST_CPMG, MODEL_LIST_FULL, MODEL_LIST_DW_MIX_DOUBLE,
MODEL_LIST_DW_MIX_QUADRUPLE, MODEL_LIST_INV_RELAX_TIMES, MODEL_LIST_R20B,
MODEL_LIST_MMQ, MODEL_LIST_MQ_CPMG, MODEL_LIST_NUMERIC, MODEL_LIST_R1RHO,
MODEL_LIST_R1RHO_FULL, MODEL_LIST_R1RHO_OFF_RES, MODEL_LM63, MODEL_LM63_3SITE,
MODEL_M61, MODEL_M61B, MODEL_MP05, MODEL_MMQ_CR72, MODEL_NOREX,
MODEL_NOREX_R1RHO, MODEL_NS_CPMG_2SITE_3D, MODEL_NS_CPMG_2SITE_3D_FULL,
MODEL_NS_CPMG_2SITE_EXPANDED, MODEL_NS_CPMG_2SITE_STAR,
MODEL_NS_CPMG_2SITE_STAR_FULL, MODEL_NS_MMQ_2SITE, MODEL_NS_MMQ_3SITE,
MODEL_NS_MMQ_3SITE_LINEAR, MODEL_NS_R1RHO_2SITE, MODEL_NS_R1RHO_3SITE,
MODEL_NS_R1RHO_3SITE_LINEAR, MODEL_TAP03, MODEL_TP02, MODEL_TSMFK01
+from specific_analyses.relax_disp.variables import EXP_TYPE_CPMG_DQ,
EXP_TYPE_CPMG_MQ, EXP_TYPE_CPMG_PROTON_MQ, EXP_TYPE_CPMG_PROTON_SQ,
EXP_TYPE_CPMG_SQ, EXP_TYPE_CPMG_ZQ, EXP_TYPE_LIST_CPMG, EXP_TYPE_R1RHO,
MODEL_B14, MODEL_B14_FULL, MODEL_CR72, MODEL_CR72_FULL, MODEL_DPL94,
MODEL_IT99, MODEL_LIST_CPMG, MODEL_LIST_FULL, MODEL_LIST_DW_MIX_DOUBLE,
MODEL_LIST_DW_MIX_QUADRUPLE, MODEL_LIST_INV_RELAX_TIMES, MODEL_LIST_R20B,
MODEL_LIST_MMQ, MODEL_LIST_MQ_CPMG, MODEL_LIST_NUMERIC, MODEL_LIST_R1RHO,
MODEL_LIST_R1RHO_FULL, MODEL_LIST_R1RHO_OFF_RES, MODEL_LM63, MODEL_LM63_3SITE,
MODEL_M61, MODEL_M61B, MODEL_MP05, MODEL_MMQ_CR72, MODEL_NOREX,
MODEL_NS_CPMG_2SITE_3D, MODEL_NS_CPMG_2SITE_3D_FULL,
MODEL_NS_CPMG_2SITE_EXPANDED, MODEL_NS_CPMG_2SITE_STAR,
MODEL_NS_CPMG_2SITE_STAR_FULL, MODEL_NS_MMQ_2SITE, MODEL_NS_MMQ_3SITE,
MODEL_NS_MMQ_3SITE_LINEAR, MODEL_NS_R1RHO_2SITE, MODEL_NS_R1RHO_3SITE,
MODEL_NS_R1RHO_3SITE_LINEAR, MODEL_TAP03, MODEL_TP02, MODEL_TSMFK01
class Dispersion:
@@ -359,21 +359,22 @@
self.errors[ei, si, mi, oi, :num_disp_points] =
errors[ei][si][mi][oi]
self.disp_struct[ei, si, mi, oi, :num_disp_points] =
ones(num_disp_points)
+ # Store the offset data.
+ if offset != None and len(offset[ei][si][mi]):
+ self.offset[ei, si, mi, oi] =
offset[ei][si][mi][oi]
+
# Loop over dispersion points.
for di in range(num_disp_points):
if missing[ei][si][mi][oi][di]:
self.has_missing = True
self.missing[ei, si, mi, oi, di] = 1.0
- # For R1rho data.
- if model in MODEL_LIST_R1RHO_FULL and model !=
MODEL_NOREX:
- self.disp_struct[ei, si, mi, oi, di] = 1.0
-
- # Get the tilt angles.
+ # Get the tilt angles for off-resonance data.
+ if tilt_angles != None and di <
len(tilt_angles[ei][si][mi][oi]):
self.tilt_angles[ei, si, mi, oi, di] =
tilt_angles[ei][si][mi][oi][di]
- self.offset[ei, si, mi, oi] =
offset[ei][si][mi][oi]
-
- # Convert the spin-lock data to rad.s^-1.
+
+ # Convert the spin-lock data to rad.s^-1.
+ if spin_lock_nu1 != None and
len(spin_lock_nu1[ei][mi][oi]):
self.spin_lock_omega1[ei, si, mi, oi, di] =
2.0 * pi * spin_lock_nu1[ei][mi][oi][di]
self.spin_lock_omega1_squared[ei, si, mi, oi,
di] = self.spin_lock_omega1[ei, si, mi, oi, di] ** 2
@@ -483,12 +484,14 @@
# Set up the model.
if model == MODEL_NOREX:
- self.func = self.func_NOREX
- if model == MODEL_NOREX_R1RHO:
- if r1_fit:
- self.func = self.func_NOREX_R1RHO_FIT_R1
+ # FIXME: Handle mixed experiment types here - probably by merging
target functions.
+ if self.exp_types[0] in EXP_TYPE_LIST_CPMG:
+ self.func = self.func_NOREX
else:
- self.func = self.func_NOREX_R1RHO
+ if r1_fit:
+ self.func = self.func_NOREX_R1RHO_FIT_R1
+ else:
+ self.func = self.func_NOREX_R1RHO
if model == MODEL_LM63:
self.func = self.func_LM63
if model == MODEL_LM63_3SITE:
_______________________________________________
relax (http://www.nmr-relax.com)
This is the relax-commits mailing list
[email protected]
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