You are here

Docking- Binding Energy

11 posts / 0 new
Last post
Docking- Binding Energy

in ligand docking i cant find binding energy in output ligand.fasc file.....anyone kindly tell me how can i find it in ligand.fasc file???

Post Situation: 
Thu, 2012-11-15 02:56

Post the file (or just the first few lines) and I'll see if I can find it. Failing that, InterfaceAnalyzer is a great way to get protein-protein binding energies; I think it will probably work for protein-ligand binding energies but I've never tried.

Thu, 2012-11-15 06:52

filename: Ligand_1.pdb total_score: -767.72 fa_atr: -1771.285 fa_rep: 422.799 fa_sol: 777.574 hack_elec: -29.285 pro_close: 24.274 fa_pair: -45.507 hbond_sr_bb: -639.694 hbond_lr_bb: -14.447 hbond_bb_sc: -31.945 hbond_sc: -23.034 dslf_ss_dst: 0.000 dslf_cs_ang: 0.000 dslf_ss_dih: 0.000 dslf_ca_dih: 0.000 atom_pair_constraint: 0.000 coordinate_constraint: 0.000 angle_constraint: 0.000 dihedral_constraint: 0.000 omega: 190.924 fa_dun: 506.152 p_aa_pp: -29.117 ref: -105.130 chainbreak: 0.000

Thu, 2012-11-15 20:44

The binding energy of the ligand to the protein should be represented by the column "interface_delta" in the regular ligand docking scorefile.

Other terms of interest are "ligand_is_touching" (to help throw out those occasional cases where the ligand isn't in contact with the protein) the "if_*" terms (the interaction energy, broken down by Rosetta terms), and if you gave a reasonable native structure to ligand docking "ligand_auto_rms_no_super", which tells you how far from the native ligand position the docked ligand is (Typically less than 2 Ang is considered "near native"). And of course, the standard total_score and related terms, which will include both the ligand binding energy and any internal protein rearrangement energies.


I just remembered you posted in the PyRosetta subsection. The columns listed above are for the analysis done by the standard ligand docking protocol. Depending on the script you're using in PyRosetta, they might not exist. You would have to post the score terms you do have in order to see which is the most appropriate.

If you want the score terms, it should be straightforward to get them. The ligand docking analysis is done by the LigandDockProtocol.append_ligand_docking_scores(native_pose, docked_pose, scorefxn, scores_out) function. I've never called it from Python, but I'm guessing you could call it with scores_out as an empty dictionary, and upon return the scoreterm:value pairs will be set in the dictionary. (If you don't have a true native, just pass the starting pose as the native, and then ignore the associated scores.)


The LigandDockProtocol class is in protocols.ligand_docking. Also, a regular Python dictionary might not work, depending on how PyRosetta is set up - you'll need whatever the PyRosetta equivalent of a std::map< std::string, core::Real > is.

Thu, 2012-11-15 11:25

yup! you are right i am using PyRosetta and i tried alot but it can't find any LigandDockProtocol class i don't know why but it should import it when i use from rosetta import * right?
and also can't find any PyRosetta equivalent of a std::map< std::string, core::Real >..... i'm kind of stuck there

Thu, 2012-11-15 21:35

Rosetta is *big*. "from rosetta import *" is only going to import the most important classes - if it imported everything, you'd have massive namespace pollution. The rest should be included in sub-modules, anyway, so it's not that big of deal. I think something like:

import rosetta.protocols.ligand_docking

LDP = rosetta.protocols.ligand_docking.LigandDockProtocol()
LDP.append_ligand_docking_scores(native_pose, docked_pose, scorefxn, scores_out)

Unfortunately, I'm not familiar enough with PyRosetta to know how it would wrap std::map< std::string, core::Real >. I would try a standard dictionary, but if that doesn't work, hopefully Sergey will be along shortly to shed some light on things.

Fri, 2012-11-16 11:56

As Rocco correctly pointed out we can't really afford to import all object when we do 'from rosetta import *' - so you have to import namespaces that you need individually.

Regarding the map types: I just committed support for string-> real map types. New builds starting with 52222 should have it. Here example of how to use it:

m = rosetta.utility.rosetta.utility.map_string_Real()
m['aaa'] = 1.0; m['bb']= 3.0
print m

Fri, 2012-11-16 13:52

by using import rosetta.protocols.ligand_docking i got this:
RuntimeError: extension class wrapper for base class protocols::jd2::parser::DataLoaderCreator has not been created yet
i am using pyrosetta for ubuntu 12.04 64bit did it contain new build you are talking about? and i am new on pyrosetta and running out of time so kindly help me out....thanx

Fri, 2012-11-16 23:17

Did you remember to call the pyrosetta init() function?

The changes Sergey mentioned were *just* added Friday afternoon. If you downloaded your version before then, you don't have them yet. I'm not sure when they'll make it to the downloadable PyRosetta version, but if you check the SVN release number associated with the PyRosetta build, it should be 52222 or later to include it.

If you're just interested in the interface energy, you can try calculating it manually. The technique used is to score the pose, translate the ligand far away (~500 Ang) from the protein, rescore and subtract. Something like the following may work for you:


from rosetta.protocols.rigid import RigidBodyTransMover

# To be non-destructive, make a copy of the pose first

bound_score = scorefxn( pose )

trans_mover = RigidBodyTransMover trans_mover( pose, 1 ) # 1 is the jump number - assuming the ligand is the last chain, 1 if you have two chains, 2 if two protein and one ligand, etc.
trans_mover.step_size(500) # 500 Ang apart
trans_mover.apply( pose )

unbound_score = scorefxn( pose )

interface_delta = bound_score - unbound_score

Sun, 2012-11-18 12:53

Currently we our trunk build is broken so 52222 or later PyRosetta build will most likely be ready in the next few days.

Mon, 2012-11-19 11:56

Hii, i stucked while running the demo file of the ligand docking protocal (/rosetta-3.5/rosetta_demos/public/dock_ligand_and_proteins)", ERROR related to mover its showing
"Error: ERROR: Exception caught by JobDistributor while trying to get pose from job FKBP+RAP_0001'SlideTogether' mover requires chains tag" output showing bellow:
setting ligand_soft_rep weight hack_elec to 0.42
defined score function "hard_rep" with weights "ligand"
setting hard_rep weight hack_elec to 0.42
protocols.jd2.DockDesignParser: Defined mover named "translate" of type Translate
protocols.jd2.DockDesignParser: Defined mover named "rotate" of type Rotate
Error: ERROR: Exception caught by JobDistributor while trying to get pose from job FKBP+RAP_0001'SlideTogether' mover requires chains tag
Error: Treating failure as bad input; canceling similar jobs
protocols.jd2.FileSystemJobDistributor: job failed, reporting bad input; other jobs of same input will be canceled: FKBP+RAP_0001
protocols.jd2.JobDistributor: no more batches to process...
protocols.jd2.JobDistributor: 1 jobs considered, 1 jobs attempted in 4 seconds

Tue, 2013-06-18 04:17