mailr2700 - in /branches/tensor_pdb: generic_fns/molmol.py prompt/molmol.py


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

Header


Content

Posted by edward . dauvergne on October 29, 2006 - 08:43:
Author: bugman
Date: Sun Oct 29 08:42:32 2006
New Revision: 2700

URL: http://svn.gna.org/viewcvs/relax?rev=2700&view=rev
Log:
Created the user function 'molmol.tensor_pdb()' for displaying the diffusion 
tensor in Molmol.

The function takes the pre-generated diffusion tensor PDB file, created with 
the user function
'pdb.create_tensor_pdb()', and displays it in Molmol over the loaded 
structure.


Modified:
    branches/tensor_pdb/generic_fns/molmol.py
    branches/tensor_pdb/prompt/molmol.py

Modified: branches/tensor_pdb/generic_fns/molmol.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/tensor_pdb/generic_fns/molmol.py?rev=2700&r1=2699&r2=2700&view=diff
==============================================================================
--- branches/tensor_pdb/generic_fns/molmol.py (original)
+++ branches/tensor_pdb/generic_fns/molmol.py Sun Oct 29 08:42:32 2006
@@ -21,6 +21,7 @@
 
###############################################################################
 
 from os import popen
+from string import split
 
 
 class Molmol:
@@ -190,6 +191,44 @@
         self.pipe_write("XMacStand ribbon.mac")
 
 
+    def tensor_pdb(self, run=None, file=None):
+        """Display the diffusion tensor geometric structure."""
+
+        # Arguments.
+        self.run = run
+
+        # Test if the run exists.
+        if not self.run in self.relax.data.run_names:
+            raise RelaxNoRunError, self.run
+
+        # To overlay the structure with the diffusion tensor, select all and 
reorient to the PDB frame.
+        self.pipe_write("SelectAtom ''")
+        self.pipe_write("SelectBond ''")
+        self.pipe_write("SelectAngle ''")
+        self.pipe_write("SelectDist ''")
+        self.pipe_write("SelectPrim ''")
+        self.pipe_write("RotateInit")
+        self.pipe_write("MoveInit")
+
+        # Read in the tensor PDB file and force Molmol to recognise the 
CONECT records (not that it will show the bonds)!
+        self.pipe_write("ReadPdb " + file)
+        file_parts = split(file, '.')
+        self.pipe_write("SelectMol '@" + file_parts[0] + "'")
+        self.pipe_write("CalcBond 1 1 1")
+
+        # Apply the 'ball/stick' style to the tensor.
+        self.pipe_write("SelectAtom '0'")
+        self.pipe_write("SelectBond '0'")
+        self.pipe_write("SelectAtom ':TNS'")
+        self.pipe_write("SelectBond ':TNS'")
+        self.pipe_write("XMacStand ball_stick.mac")
+
+        # Touch up.
+        self.pipe_write("RadiusAtom 1")
+        self.pipe_write("SelectAtom ':TNS@C*'")
+        self.pipe_write("RadiusAtom 1.5")
+
+
     def view(self, run=None):
         """Function for running Molmol."""
 

Modified: branches/tensor_pdb/prompt/molmol.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/tensor_pdb/prompt/molmol.py?rev=2700&r1=2699&r2=2700&view=diff
==============================================================================
--- branches/tensor_pdb/prompt/molmol.py (original)
+++ branches/tensor_pdb/prompt/molmol.py Sun Oct 29 08:42:32 2006
@@ -241,6 +241,80 @@
 
         # Execute the functional code.
         self.__relax__.generic.molmol.ribbon(run=run)
+
+
+    def tensor_pdb(self, run=None, file=None):
+        """Function displaying the diffusion tensor PDB geometric object 
over the loaded PDB.
+
+        Keyword Arguments
+        ~~~~~~~~~~~~~~~~~
+
+        run:  The name of the run.
+
+        file:  The name of the PDB file containing the tensor geometric 
object.
+
+
+        Description
+        ~~~~~~~~~~~
+
+        In executing this user function, a PDB file must have previously 
been loaded into this run,
+        a geometric object or polygon representing the Brownian rotational 
diffusion tensor will be
+        overlain with the loaded PDB file and displayed within Molmol.  The 
PDB file containing the
+        geometric object must be created using the complementary 
'pdb.create_tensor_pdb()' user
+        function.
+
+        To display the diffusion tensor, the multiple commands will be 
executed.  To overlay the
+        structure with the diffusion tensor, everything will be selected and 
reoriented and moved to
+        their original PDB frame positions:
+
+            SelectAtom ''
+            SelectBond ''
+            SelectAngle ''
+            SelectDist ''
+            SelectPrim ''
+            RotateInit
+            MoveInit
+
+        Next the tensor PDB file is read in, selected, and the covalent 
bonds of the PDB CONECT
+        records calculated:
+
+            ReadPdb file
+            SelectMol '@file'
+            CalcBond 1 1 1
+
+        Then only the atoms and bonds of the geometric object are selected 
and the 'ball/stick'
+        style applied:
+
+            SelectAtom '0'
+            SelectBond '0'
+            SelectAtom ':TNS'
+            SelectBond ':TNS'
+            XMacStand ball_stick.mac
+
+        The appearance is finally touched up:
+
+            RadiusAtom 1
+            SelectAtom ':TNS@C*'
+            RadiusAtom 1.5
+        """
+
+        # Function intro text.
+        if self.__relax__.interpreter.intro:
+            text = sys.ps3 + "molmol.tensor_pdb("
+            text = text + "run=" + `run`
+            text = text + ", file=" + `file` + ")"
+            print text
+
+        # The run name.
+        if type(run) != str:
+            raise RelaxStrError, ('run', run)
+
+        # The file name.
+        if type(file) != str:
+            raise RelaxStrError, ('file name', file)
+
+        # Execute the functional code.
+        self.__relax__.generic.molmol.tensor_pdb(run=run, file=file)
 
 
     def view(self, run=None):




Related Messages


Powered by MHonArc, Updated Sun Oct 29 09:00:07 2006