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.