mailr9806 - /branches/bmrb/specific_fns/model_free/bmrb.py


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

Header


Content

Posted by edward on October 27, 2009 - 15:58:
Author: bugman
Date: Tue Oct 27 15:58:11 2009
New Revision: 9806

URL: http://svn.gna.org/viewcvs/relax?rev=9806&view=rev
Log:
Entity IDs are going into the model-free saveframe and missing parameter 
errors are now handled.


Modified:
    branches/bmrb/specific_fns/model_free/bmrb.py

Modified: branches/bmrb/specific_fns/model_free/bmrb.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bmrb/specific_fns/model_free/bmrb.py?rev=9806&r1=9805&r2=9806&view=diff
==============================================================================
--- branches/bmrb/specific_fns/model_free/bmrb.py (original)
+++ branches/bmrb/specific_fns/model_free/bmrb.py Tue Oct 27 15:58:11 2009
@@ -22,6 +22,7 @@
 
 # Python module imports.
 from math import pi
+from numpy import int32, zeros
 import string
 
 # relax module imports.
@@ -29,7 +30,7 @@
 from bmrblib.nmr_star_dict_v3_1 import NMR_STAR_v3_1
 from bmrblib.nmr_star_dict_v3_2 import NMR_STAR_v3_2
 from generic_fns import exp_info, mol_res_spin, pipes, relax_data
-from generic_fns.mol_res_spin import spin_loop
+from generic_fns.mol_res_spin import get_molecule_names, spin_loop
 from relax_errors import RelaxError
 
 
@@ -113,6 +114,7 @@
         }
 
         # Initialise the spin specific data lists.
+        mol_name_list = []
         res_num_list = []
         res_name_list = []
         atom_name_list = []
@@ -162,6 +164,7 @@
                 raise RelaxError("For the BMRB, the spin element type of 
'%s' must be specified.  Please use the spin user function for setting the 
element type." % spin_id)
 
             # The molecule/residue/spin info.
+            mol_name_list.append(mol_name)
             res_num_list.append(res_num)
             res_name_list.append(res_name)
             atom_name_list.append(spin.name)
@@ -174,9 +177,12 @@
 
             # Diffusion tensor.
             local_tm_list.append(spin.local_tm)
-            local_tm_err_list.append(spin.local_tm_err)
-
-            # Model-free data.
+            if hasattr(spin, 'local_tm_err'):
+                local_tm_err_list.append(spin.local_tm_err)
+            else:
+                local_tm_err_list.append(None)
+
+            # Model-free parameter values.
             s2_list.append(spin.s2)
             s2f_list.append(spin.s2f)
             s2s_list.append(spin.s2s)
@@ -188,22 +194,41 @@
             else:
                 rex_list.append(spin.rex / (2.0*pi*rex_frq**2))
 
-            s2_err_list.append(spin.s2_err)
-            s2f_err_list.append(spin.s2f_err)
-            s2s_err_list.append(spin.s2s_err)
-            te_err_list.append(spin.te_err)
-            tf_err_list.append(spin.tf_err)
-            ts_err_list.append(spin.ts_err)
-            if spin.rex_err == None:
-                rex_err_list.append(None)
-            else:
-                rex_err_list.append(spin.rex_err / (2.0*pi*rex_frq**2))
+            # Model-free parameter errors.
+            params = ['s2', 's2f', 's2s', 'te', 'tf', 'ts', 'rex']
+            for param in params:
+                # The error list.
+                err_list = locals()[param+'_err_list']
+
+                # Append the error.
+                if hasattr(spin, param+'_err'):
+                    # The value.
+                    val = getattr(spin, param+'_err')
+
+                    # Scaling.
+                    if param == 'rex':
+                        val = val / (2.0*pi*rex_frq**2)
+                    # Append.
+                    err_list.append(val)
+
+                # Or None.
+                else:
+                    err_list.append(None)
+
 
             # Opt stats.
             chi2_list.append(spin.chi2)
 
             # Model-free model.
             model_list.append(model_map[spin.model])
+
+        # Convert the molecule names into the entity IDs.
+        entity_ids = zeros(len(mol_name_list), int32)
+        mol_names = get_molecule_names()
+        for i in range(len(mol_name_list)):
+            for j in range(len(mol_names)):
+                if mol_name_list[i] == mol_names[j]:
+                    entity_ids[i] = j+1
 
 
         # Create Supergroup 2 : The citations.
@@ -250,7 +275,7 @@
                 software_id = software_ids[i]
 
         # Generate the model-free data saveframe.
-        star.model_free.add(global_chi2=global_chi2, 
software_ids=[software_id], software_labels=['relax'], res_nums=res_num_list, 
res_names=res_name_list, atom_names=atom_name_list, atom_types=element_list, 
isotope=isotope_list, local_tc=local_tm_list, s2=s2_list, s2f=s2f_list, 
s2s=s2s_list, te=te_list, tf=tf_list, ts=ts_list, rex=rex_list, 
local_tc_err=local_tm_err_list, s2_err=s2_err_list, s2f_err=s2f_err_list, 
s2s_err=s2s_err_list, te_err=te_err_list, tf_err=tf_err_list, 
ts_err=ts_err_list, rex_err=rex_err_list, rex_frq=rex_frq, chi2=chi2_list, 
model_fit=model_list)
+        star.model_free.add(global_chi2=global_chi2, 
software_ids=[software_id], software_labels=['relax'], entity_ids=entity_ids, 
res_nums=res_num_list, res_names=res_name_list, atom_names=atom_name_list, 
atom_types=element_list, isotope=isotope_list, local_tc=local_tm_list, 
s2=s2_list, s2f=s2f_list, s2s=s2s_list, te=te_list, tf=tf_list, ts=ts_list, 
rex=rex_list, local_tc_err=local_tm_err_list, s2_err=s2_err_list, 
s2f_err=s2f_err_list, s2s_err=s2s_err_list, te_err=te_err_list, 
tf_err=tf_err_list, ts_err=ts_err_list, rex_err=rex_err_list, 
rex_frq=rex_frq, chi2=chi2_list, model_fit=model_list)
 
 
         # Write the contents to the STAR formatted file.




Related Messages


Powered by MHonArc, Updated Tue Oct 27 16:20:02 2009