mailr18741 - /trunk/generic_fns/mol_res_spin.py


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

Header


Content

Posted by edward on March 10, 2013 - 16:11:
Author: bugman
Date: Sun Mar 10 16:11:03 2013
New Revision: 18741

URL: http://svn.gna.org/viewcvs/relax?rev=18741&view=rev
Log:
Created the generic_fns.mol_res_spin.generate_spin_id_unique() function.

This will return a truly unique spin ID string based on the current molecule, 
residue, and spin data
structure.


Modified:
    trunk/generic_fns/mol_res_spin.py

Modified: trunk/generic_fns/mol_res_spin.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/generic_fns/mol_res_spin.py?rev=18741&r1=18740&r2=18741&view=diff
==============================================================================
--- trunk/generic_fns/mol_res_spin.py (original)
+++ trunk/generic_fns/mol_res_spin.py Sun Mar 10 16:11:03 2013
@@ -1732,6 +1732,52 @@
 
     # Return the spin id string.
     return id
+
+
+def generate_spin_id_unique(pipe_cont=None, pipe_name=None, mol=None, 
res=None, spin=None):
+    """Generate a list of spin ID variants for the given set of molecule, 
residue and spin indices.
+
+    @keyword pipe_cont: The data pipe object.
+    @type pipe_cont:    PipeContainer instance
+    @keyword pipe_name: The data pipe name.
+    @type pipe_name:    str
+    @keyword mol:       The molecule container.
+    @type mol:          MoleculeContainer instance
+    @keyword res:       The residue container.
+    @type res:          ResidueContainer instance
+    @keyword spin:      The spin container.
+    @type spin:         SpinContainer instance
+    @return:            The unique spin ID.
+    @rtype:             str
+    """
+
+    # The data pipe.
+    if pipe_cont == None:
+        pipe_cont = pipes.get_pipe(pipe_name)
+
+    # Unique info.
+    unique_res_name = True
+    if res.name != None and mol._res_name_count[res.name] > 1:
+        unique_res_name = False
+    unique_res_num = True
+    if res.num != None and mol._res_num_count[res.num] > 1:
+        unique_res_num = False
+    unique_spin_name = True
+    if spin.name != None and res._spin_name_count[spin.name] > 1:
+        unique_spin_name = False
+    unique_spin_num = True
+    if spin.num != None and res._spin_num_count[spin.num] > 1:
+        unique_spin_num = False
+
+    # The unique ID.
+    if unique_res_name and unique_spin_num:
+        return generate_spin_id(pipe_cont=pipe_cont, mol_name=mol.name, 
res_name=res.name, spin_num=spin.num)
+    if unique_res_name and unique_spin_name:
+        return generate_spin_id(pipe_cont=pipe_cont, mol_name=mol.name, 
res_name=res.name, spin_name=spin.name)
+    if unique_res_num and unique_spin_name:
+        return generate_spin_id(pipe_cont=pipe_cont, mol_name=mol.name, 
res_num=res.num, spin_name=spin.name)
+    if unique_res_num and unique_spin_num:
+        return generate_spin_id(pipe_cont=pipe_cont, mol_name=mol.name, 
res_num=res.num, spin_num=spin.num)
 
 
 def get_molecule_ids(selection=None):
@@ -3636,7 +3682,7 @@
 
                 # Generate the spin id.
                 if return_id:
-                    spin_id = generate_spin_id(pipe_cont=dp, 
mol_name=mol.name, res_num=res.num, res_name=res.name, spin_num=spin.num, 
spin_name=spin.name)
+                    spin_id = generate_spin_id(pipe_cont=dp, mol=mol, 
res=res, spin=spin)
 
                 # Yield the data.
                 if full_info and return_id:




Related Messages


Powered by MHonArc, Updated Sun Mar 10 16:20:01 2013