mailr8922 - /branches/bmrb/bmrblib/kinetics/heteronucl_T1_relaxation.py


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

Header


Content

Posted by edward on March 06, 2009 - 16:01:
Author: bugman
Date: Fri Mar  6 15:48:36 2009
New Revision: 8922

URL: http://svn.gna.org/viewcvs/relax?rev=8922&view=rev
Log:
Extraction of R1 data is now supported by the bmrblib API.


Modified:
    branches/bmrb/bmrblib/kinetics/heteronucl_T1_relaxation.py

Modified: branches/bmrb/bmrblib/kinetics/heteronucl_T1_relaxation.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bmrb/bmrblib/kinetics/heteronucl_T1_relaxation.py?rev=8922&r1=8921&r2=8922&view=diff
==============================================================================
--- branches/bmrb/bmrblib/kinetics/heteronucl_T1_relaxation.py (original)
+++ branches/bmrb/bmrblib/kinetics/heteronucl_T1_relaxation.py Fri Mar  6 
15:48:36 2009
@@ -113,6 +113,41 @@
         self.T1 = T1(self)
 
 
+    def loop(self):
+        """Loop over the T1 saveframes, yielding the relaxation data.
+
+        @return:    The relaxation data consisting of the proton frequency, 
residue numbers, residue
+                    names, atom names, values, and errors.
+        @rtype:     tuple of float, list of int, list of str, list of str, 
list of float, list of
+                    float
+        """
+
+        # Loop over all datanodes.
+        for datanode in self.datanodes:
+            # Find the Heteronuclear T1 saveframes via the SfCategory tag 
index.
+            found = False
+            for index in range(len(datanode.tagtables[0].tagnames)):
+                # First match the tag names.
+                if datanode.tagtables[0].tagnames[index] == 
self.heteronuclT1list.create_tag_label(self.heteronuclT1list.tag_names['SfCategory']):
+                    # Then the tag value.
+                    if datanode.tagtables[0].tagvalues[index][0] == 
self.label+'_relaxation':
+                        found = True
+                        break
+
+            # Skip the datanode.
+            if not found:
+                continue
+
+            # Get general info.
+            frq = self.heteronuclT1list.read(datanode.tagtables[0])
+
+            # Get the T1 info.
+            res_nums, res_names, atom_names, values, errors = 
self.T1.read(datanode.tagtables[1])
+
+            # Yield the data.
+            yield frq, res_nums, res_names, atom_names, values, errors
+
+
 class HeteronuclT1List(TagCategory):
     """Base class for the HeteronuclT1List tag category."""
 
@@ -133,6 +168,22 @@
         self.sf.frame.tagtables.append(TagTable(free=True, 
tagnames=[self.tag_names_full['SpectrometerFrequency1H']], 
tagvalues=[[str(self.sf.frq/1e6)]]))
         self.sf.frame.tagtables.append(TagTable(free=True, 
tagnames=[self.tag_names_full['T1CoherenceType']], 
tagvalues=[[self.variables['coherence']]]))
         self.sf.frame.tagtables.append(TagTable(free=True, 
tagnames=[self.tag_names_full['T1ValUnits']], tagvalues=[['1/s']]))
+
+
+    def read(self, tagtable):
+        """Extract the HeteronuclT1List tag category info.
+
+        @param tagtable:    The HeteronuclT1List tagtable.
+        @type tagtable:     Tagtable instance
+        @return:            The proton frequency in Hz.
+        @rtype:             float
+        """
+
+        # The general info.
+        frq = 
float(tagtable.tagvalues[tagtable.tagnames.index(self.tag_names_full['SpectrometerFrequency1H'])][0])
 * 1e6
+
+        # Return the data.
+        return frq
 
 
     def tag_setup(self, tag_category_label=None, sep=None):
@@ -227,6 +278,33 @@
         self.sf.frame.tagtables.append(table)
 
 
+    def read(self, tagtable):
+        """Extract the T1 tag category info.
+
+        @param tagtable:    The T1 tagtable.
+        @type tagtable:     Tagtable instance
+        @return:            The residue numbers, residue names, atom names, 
values, and errors.
+        @rtype:             tuple of list of int, list of str, list of str, 
list of float, list of
+                            float
+        """
+
+        # The entity info.
+        res_nums = 
tagtable.tagvalues[tagtable.tagnames.index(self.tag_names_full['SeqID'])]
+        res_names = 
tagtable.tagvalues[tagtable.tagnames.index(self.tag_names_full['CompID'])]
+        atom_names = 
tagtable.tagvalues[tagtable.tagnames.index(self.tag_names_full['AtomID'])]
+        values = 
tagtable.tagvalues[tagtable.tagnames.index(self.tag_names_full['Val'])]
+        errors = 
tagtable.tagvalues[tagtable.tagnames.index(self.tag_names_full['ValErr'])]
+
+        # Convert the residue numbers to ints and the values and errors to 
floats.
+        for i in range(len(res_nums)):
+            res_nums[i] = int(res_nums[i])
+            values[i] = float(res_nums[i])
+            errors[i] = float(res_nums[i])
+
+        # Return the data.
+        return res_nums, res_names, atom_names, values, errors
+
+
     def tag_setup(self, tag_category_label=None, sep=None):
         """Replacement method for setting up the tag names.
 




Related Messages


Powered by MHonArc, Updated Fri Mar 06 16:20:04 2009