mailr27857 - in /trunk/specific_analyses/n_state_model: api.py optimisation.py


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

Header


Content

Posted by edward on June 24, 2015 - 14:39:
Author: bugman
Date: Wed Jun 24 14:39:42 2015
New Revision: 27857

URL: http://svn.gna.org/viewcvs/relax?rev=27857&view=rev
Log:
Added simulation support for the RDC and PCS Q factors in the N-state model 
analysis.

This is for both Monte Carlo and Bootstrap simulation.  The simulation RDC 
and PCS values, as well
as the simulation back calculated values are now stored via the 
minimise_bc_data() function of
specific_analyses.n_state_model.optimisation in the respective spin or 
interatomic data containers.
The analysis specific API methods now send the sim_index value into 
minimise_bc_data(), as well as
the pipe_control.rdc.q_factors() and pipe_control.pcs.q_factors() functions.


Modified:
    trunk/specific_analyses/n_state_model/api.py
    trunk/specific_analyses/n_state_model/optimisation.py

Modified: trunk/specific_analyses/n_state_model/api.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/specific_analyses/n_state_model/api.py?rev=27857&r1=27856&r2=27857&view=diff
==============================================================================
--- trunk/specific_analyses/n_state_model/api.py        (original)
+++ trunk/specific_analyses/n_state_model/api.py        Wed Jun 24 14:39:42 
2015
@@ -1,6 +1,6 @@
 
###############################################################################
 #                                                                            
 #
-# Copyright (C) 2007-2014 Edward d'Auvergne                                  
 #
+# Copyright (C) 2007-2015 Edward d'Auvergne                                  
 #
 #                                                                            
 #
 # This file is part of the program relax (http://www.nmr-relax.com).         
 #
 #                                                                            
 #
@@ -163,15 +163,15 @@
             cdp.chi2 = chi2
 
             # Store the back-calculated data.
-            minimise_bc_data(model)
+            minimise_bc_data(model, sim_index=sim_index)
 
             # Calculate the RDC Q factors.
             if 'rdc' in data_types:
-                rdc.q_factors()
+                rdc.q_factors(sim_index=sim_index, verbosity=verbosity)
 
             # Calculate the PCS Q factors.
             if 'pcs' in data_types:
-                pcs.q_factors()
+                pcs.q_factors(sim_index=sim_index, verbosity=verbosity)
 
         # NOE potential.
         if hasattr(cdp, 'noe_restraints'):
@@ -579,17 +579,17 @@
             cdp.warning = warning
 
         # Statistical analysis.
-        if sim_index == None and ('rdc' in data_types or 'pcs' in 
data_types):
+        if 'rdc' in data_types or 'pcs' in data_types:
             # Get the final back calculated data (for the Q factor and
-            minimise_bc_data(model)
+            minimise_bc_data(model, sim_index=sim_index)
 
             # Calculate the RDC Q factors.
             if 'rdc' in data_types:
-                rdc.q_factors()
+                rdc.q_factors(sim_index=sim_index, verbosity=verbosity)
 
             # Calculate the PCS Q factors.
             if 'pcs' in data_types:
-                pcs.q_factors()
+                pcs.q_factors(sim_index=sim_index, verbosity=verbosity)
 
 
     def model_statistics(self, model_info=None, spin_id=None, 
global_stats=None):

Modified: trunk/specific_analyses/n_state_model/optimisation.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/specific_analyses/n_state_model/optimisation.py?rev=27857&r1=27856&r2=27857&view=diff
==============================================================================
--- trunk/specific_analyses/n_state_model/optimisation.py       (original)
+++ trunk/specific_analyses/n_state_model/optimisation.py       Wed Jun 24 
14:39:42 2015
@@ -1,6 +1,6 @@
 
###############################################################################
 #                                                                            
 #
-# Copyright (C) 2007-2014 Edward d'Auvergne                                  
 #
+# Copyright (C) 2007-2015 Edward d'Auvergne                                  
 #
 #                                                                            
 #
 # This file is part of the program relax (http://www.nmr-relax.com).         
 #
 #                                                                            
 #
@@ -40,16 +40,21 @@
 from target_functions.n_state_model import N_state_opt
 
 
-def minimise_bc_data(model):
+def minimise_bc_data(model, sim_index=None):
     """Extract and unpack the back calculated data.
 
-    @param model:   The instantiated class containing the target function.
-    @type model:    class instance
+    @param model:       The instantiated class containing the target 
function.
+    @type model:        class instance
+    @keyword sim_index: The optional Monte Carlo simulation index.
+    @type sim_index:    None or int
     """
 
     # No alignment tensors, so nothing to do.
     if not hasattr(cdp, 'align_tensors'):
         return
+
+    # Simulation flag.
+    sim_flag = (sim_index != None)
 
     # Loop over each alignment.
     align_index = 0
@@ -79,11 +84,20 @@
             # Spins with PCS data.
             if pcs_flag and hasattr(spin, 'pcs'):
                 # Initialise the data structure if necessary.
-                if not hasattr(spin, 'pcs_bc'):
-                    spin.pcs_bc = {}
+                if sim_flag:
+                    if not hasattr(spin, 'pcs_sim_bc'):
+                        spin.pcs_sim_bc = {}
+                    if align_id not in spin.pcs_sim_bc:
+                        spin.pcs_sim_bc[align_id] = [None] * cdp.sim_number
+                else:
+                    if not hasattr(spin, 'pcs_bc'):
+                        spin.pcs_bc = {}
 
                 # Add the back calculated PCS (in ppm).
-                spin.pcs_bc[align_id] = model.deltaij_theta[align_index, 
pcs_index] * 1e6
+                if sim_flag:
+                    spin.pcs_sim_bc[align_id][sim_index] = 
model.deltaij_theta[align_index, pcs_index] * 1e6
+                else:
+                    spin.pcs_bc[align_id] = model.deltaij_theta[align_index, 
pcs_index] * 1e6
 
                 # Increment the data index if the spin container has data.
                 pcs_index = pcs_index + 1
@@ -102,11 +116,20 @@
             # Containers with RDC data.
             if rdc_flag and hasattr(interatom, 'rdc'):
                 # Initialise the data structure if necessary.
-                if not hasattr(interatom, 'rdc_bc'):
-                    interatom.rdc_bc = {}
+                if sim_flag:
+                    if not hasattr(interatom, 'rdc_sim_bc'):
+                        interatom.rdc_sim_bc = {}
+                    if align_id not in interatom.rdc_sim_bc:
+                        interatom.rdc_sim_bc[align_id] = [0.0] * 
cdp.sim_number
+                else:
+                    if not hasattr(interatom, 'rdc_bc'):
+                        interatom.rdc_bc = {}
 
                 # Append the back calculated PCS.
-                interatom.rdc_bc[align_id] = model.rdc_theta[align_index, 
rdc_index]
+                if sim_flag:
+                    interatom.rdc_sim_bc[align_id][sim_index] = 
model.rdc_theta[align_index, rdc_index]
+                else:
+                    interatom.rdc_bc[align_id] = 
model.rdc_theta[align_index, rdc_index]
 
                 # Increment the data index if the interatom container has 
data.
                 rdc_index = rdc_index + 1




Related Messages


Powered by MHonArc, Updated Wed Jun 24 15:00:08 2015