mailr19153 - /trunk/pipe_control/interatomic.py


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

Header


Content

Posted by edward on March 24, 2013 - 22:22:
Author: bugman
Date: Sun Mar 24 22:22:56 2013
New Revision: 19153

URL: http://svn.gna.org/viewcvs/relax?rev=19153&view=rev
Log:
Speed ups for the interatom_loop() by restoring some of the code deleted at 
r19149.

This spin ID lookup table is being used again, as this is much faster than 
the string parsing of
spin IDs.


Modified:
    trunk/pipe_control/interatomic.py

Modified: trunk/pipe_control/interatomic.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/pipe_control/interatomic.py?rev=19153&r1=19152&r2=19153&view=diff
==============================================================================
--- trunk/pipe_control/interatomic.py (original)
+++ trunk/pipe_control/interatomic.py Sun Mar 24 22:22:56 2013
@@ -279,27 +279,35 @@
 
         # Aliases.
         interatom = dp.interatomic[i]
-
-        # Decode the spin ids.
-        mol_name1, res_num1, res_name1, spin_num1, spin_name1 = 
spin_id_to_data_list(interatom.spin_id1)
-        mol_name2, res_num2, res_name2, spin_num2, spin_name2 = 
spin_id_to_data_list(interatom.spin_id2)
+        mol_index1, res_index1, spin_index1 = 
cdp.mol._spin_id_lookup[interatom.spin_id1]
+        mol_index2, res_index2, spin_index2 = 
cdp.mol._spin_id_lookup[interatom.spin_id2]
+        mol1 =  cdp.mol[mol_index1]
+        res1 =  cdp.mol[mol_index1].res[res_index1]
+        spin1 = cdp.mol[mol_index1].res[res_index1].spin[spin_index1]
+        mol2 = cdp.mol[mol_index2]
+        res2 =  cdp.mol[mol_index2].res[res_index2]
+        spin2 = cdp.mol[mol_index2].res[res_index2].spin[spin_index2]
 
         # The different selection combinations.
         if select_obj:
-            sel1 = select_obj.contains_spin(spin_name=spin_name1, 
spin_num=spin_num1, res_name=res_name1, res_num=res_num1, mol=mol_name1)
-            sel2 = select_obj.contains_spin(spin_name=spin_name2, 
spin_num=spin_num2, res_name=res_name2, res_num=res_num2, mol=mol_name2)
+            sel1 = select_obj.contains_spin(spin_name=spin1.name, 
spin_num=spin1.num, res_name=res1.name, res_num=res1.num, mol=mol1.name)
+            sel2 = select_obj.contains_spin(spin_name=spin2.name, 
spin_num=spin2.num, res_name=res2.name, res_num=res2.num, mol=mol2.name)
         if select_obj1:
-            sel11 = select_obj1.contains_spin(spin_name=spin_name1, 
spin_num=spin_num1, res_name=res_name1, res_num=res_num1, mol=mol_name1)
-            sel12 = select_obj1.contains_spin(spin_name=spin_name2, 
spin_num=spin_num2, res_name=res_name2, res_num=res_num2, mol=mol_name2)
-            sel21 = select_obj2.contains_spin(spin_name=spin_name1, 
spin_num=spin_num1, res_name=res_name1, res_num=res_num1, mol=mol_name1)
-            sel22 = select_obj2.contains_spin(spin_name=spin_name2, 
spin_num=spin_num2, res_name=res_name2, res_num=res_num2, mol=mol_name2)
+            sel11 = select_obj1.contains_spin(spin_name=spin1.name, 
spin_num=spin1.num, res_name=res1.name, res_num=res1.num, mol=mol1.name)
+            sel12 = select_obj1.contains_spin(spin_name=spin2.name, 
spin_num=spin2.num, res_name=res2.name, res_num=res2.num, mol=mol2.name)
+        if select_obj2:
+            sel21 = select_obj2.contains_spin(spin_name=spin1.name, 
spin_num=spin1.num, res_name=res1.name, res_num=res1.num, mol=mol1.name)
+            sel22 = select_obj2.contains_spin(spin_name=spin2.name, 
spin_num=spin2.num, res_name=res2.name, res_num=res2.num, mol=mol2.name)
 
         # Check that the selections are met.
         if select_obj:
             if not sel1 and not sel2:
                 continue
         if select_obj1:
-            if not (sel11 or sel12) or not (sel21 or sel22):
+            if not (sel11 or sel12):
+                continue
+        if select_obj2:
+            if not (sel21 or sel22):
                 continue
 
         # Return the container.




Related Messages


Powered by MHonArc, Updated Sun Mar 24 22:40:04 2013