Docking- Binding Energy

Member Site Forums PyRosetta PyRosetta – Scripts Docking- Binding Energy

Viewing 4 reply threads
  • Author
    • #1463

        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???

      • #8098

          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.

        • #8099

            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.

          • #8109

              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

            • #8913

                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

              • #8101

                  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

                • #8102

                    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

                  • #8106

                      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.

                    • #8108

                        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 = 1.0; m= 3.0
                        print m

                      • #8110

                          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

                        • #8115

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

                        Viewing 4 reply threads
                        • You must be logged in to reply to this topic.