You are here

best_ifaceE.py error

8 posts / 0 new
Last post
best_ifaceE.py error
#1

All,

I'm a newbie to Rosetta. I tried extracting the best decoys from a silent file and got an error that I don't know how to fix yet.

.../ligand_docking/best_ifaceE.py NBU_silent.out

KeyError: 'ligand_is_touching'

I read that Ian Davis suggested to discard the decoys with ligand_is_touching = 0 but how does one do this?

Thanks.

Post Situation: 
Fri, 2013-07-12 08:35
rosa

What sort of silent file are you using? (How did you generate it?)

The best_ifaceE.py script is expecting an "atom tree diff"-type silent file as output from the ligand_docking application. It takes care of the ligand_is_touching condition, which is why it's complaining about it -- your silent file doesn't have the ligand_is_touching field present. (At least one of the structures in the file isn't annotated with that information.)

Fri, 2013-07-12 11:11
rmoretti

Hi rmoretti,

I generated it from a ligand docking run with the -out:file:atom_tree_diff command and got a silent file that contains the ligand_is_touching field but the value is always 1. Here is a piece of that file:

294 41 3.140276 1.048418
294 42 3.135151 1.061738
JUMP 1 0.048279343702 -0.836612284012 0.545663807863 0.089182645037 0.547729517490 0.831888713407 -0.994844490760 0.008500700569 0.101055317989 28.1944 31.2074 -5.5126
END_POSE_TAG NBU_Cdc25_S_input_0020
POSE_TAG NBUVU0063275_Cdc25_S_input_0021
SCORES NBUVU0063275_Cdc25_S_input_0021 angle_constraint 0 atom_pair_constraint 0 chainbreak 0 coordinate_constraint 1.6095 dihedral_constraint 1.78225e-07 dslf_ca_dih 0 dslf_cs_ang 0 dslf_ss_dih 0 dslf_ss_dst 0 fa_atr -1182.34 fa_dun 165.304 fa_intra_rep 2.58938 fa_pair -50.4525 fa_rep 115.277 fa_sol 540.337 hack_elec -54.4963 hbond_bb_sc -43.9065 hbond_lr_bb -17.109 hbond_sc -37.3441 hbond_sr_bb -396.882 if_X_angle_constraint 0 if_X_atom_pair_constraint 0 if_X_chainbreak 0 if_X_coordinate_constraint 0 if_X_dihedral_constraint 0 if_X_dslf_ca_dih 0 if_X_dslf_cs_ang 0 if_X_dslf_ss_dih 0 if_X_dslf_ss_dst 0 if_X_fa_atr -16.5869 if_X_fa_dun 0 if_X_fa_intra_rep 0 if_X_fa_pair -0.325116 if_X_fa_rep 1.70171 if_X_fa_sol 6.85622 if_X_hack_elec -0.757019 if_X_hbond_bb_sc -0.0879215 if_X_hbond_lr_bb 0 if_X_hbond_sc -0.174562 if_X_hbond_sr_bb 0 if_X_omega 0 if_X_p_aa_pp 0 if_X_pro_close 0 if_X_rama 0 if_X_ref 0 interface_delta_X -9.37359 ligand_centroid_travel_X 3.22392 ligand_is_touching_X 1 ligand_radius_of_gyration_X 3.5236 ligand_rms_no_super_X 6.11302 ligand_rms_with_super_X 2.48865 omega 29.4088 p_aa_pp -33.5751 pro_close 1.05299 rama -20.2437 ref -67.66 total_score -1048.43
MUTATE 89 VAL
MUTATE 90 GLU

Thanks.

Fri, 2013-07-12 15:27
rosa

I'm not surprised that ligand_is_touching is always 1. It's only rarely that it's zero, so you could very well get a run where that's not an issue.

The problem is that you're getting "ligand_is_touching_X" fields instead of just "ligand_is_touching" fields. That's because you're apparently using the RosettaScripts ligand docking as opposed to the separate ligand_docking application. Because RosettaScripts ligand docking is more flexible, including doing multi-ligand docking, it annotates the metrics with which ligand (chain) the metric refers to. Since the stand alone ligand_docking application only does single ligand docking, it doesn't bother.

best_ifaceE.py was written for the old stand-alone ligand_docking application, and hasn't been updated for the RosettaScripts ligand_docking protocol. A quick fix, assuming you're only doing single ligand docking and are going to be using chain X for the ligand chain, is to make a copy of rosetta_source/src/apps/public/best_ifaceE.py and change any "ligand_is_touching" to "ligand_is_touching_X", "interface_delta" to "interface_delta_X" and all the "if_..."s to "if_X_..."s. Basically, make sure that all the terms referenced match how they appear in the SCORES line.

Mon, 2013-07-15 11:20
rmoretti

Hi rmoretti,

Worked like charm. So, it prints out a bunch of tags. I put the tags in a list (a text file) and ran:

extract_atomtree_diffs ... -s silent.out -tags list

I even tried the individual tag alone instead of the list but it keeps complaining that

ERROR: Input AtomTreeDiff file does not have tag Cdc25_S_input_0001
ERROR:: Exit from: src/protocols/jd2/AtomTreeDiffJobInputter.cc line: 126

I could use

extract_atomtree_diffs ... -s silent.out -tags $(best_ifaceE.py silent.out)

but I use the C-Shell. Do you know the equivalent command for C-Shell?

Thanks.

Tue, 2013-07-16 18:06
rosa

Using backticks (` - the symbol on the same key as the tilde(~)) around the expression apparently works for command substitution on both BASH and the C shell, so

extract_atomtree_diffs ... -s silent.out -tags `best_ifaceE.py silent.out`

should also work. (Though I don't use the C shell.)

Wed, 2013-07-17 11:19
rmoretti

Worked like a charm!!! Thanks.

Wed, 2013-07-17 12:52
rosa

It's easy to switch to the Bash shell and use the

extract_atomtree_diffs ... -s silent.out -tags $(best_ifaceE.py silent.out)

Or a work around somebody suggested on the Forum is

extract_atomtree_diffs ... -s silent.out -tags 'cat pdblist'

Wed, 2013-07-17 10:01
rosa