You are here

No RMS and IRMS values in protein/nucleic acid docking

3 posts / 0 new
Last post
No RMS and IRMS values in protein/nucleic acid docking
#1

Hello,

I am docking a small protein / nucleic acid structure to generate dockings. The scoring contains only -nan for rms and 0.000 for Irms. Why doesn't the docking result in valid rms/irms values? Fnat and I_sc as well as total_score seem ok. What do I have to change in order to receive rms and irms values?

XML Rosetta Script (prot2.xml):

<ROSETTASCRIPTS>
    <SCOREFXNS />
        <TASKOPERATIONS />
        <FILTERS>
        <IRmsd name="irmds" confidence=0/>
        </FILTERS>
    <LIGAND_AREAS>
                <inhibitor_dock_sc  chain="C" cutoff="6.0" add_nbr_radius="true" all_atom_mode="true"/>
                <inhibitor_final_sc chain="C" cutoff="6.0" add_nbr_radius="true" all_atom_mode="true"/>
        </LIGAND_AREAS>
        <INTERFACE_BUILDERS>
                <side_chain_for_docking ligand_areas="inhibitor_dock_sc"/>
                <side_chain_for_final ligand_areas="inhibitor_final_sc"/>
        </INTERFACE_BUILDERS>
        <MOVEMAP_BUILDERS>
                <docking sc_interface="side_chain_for_docking" minimize_water="false"/>
                <final sc_interface="side_chain_for_final"  minimize_water="false"/>
        </MOVEMAP_BUILDERS>
        <MOVERS>
        <RigidBodyTransMover name="fix" jump="1" distance="15" x="0" y="0" z="0" />
        <Translate name="trans" chain="C" distribution="uniform" angstroms="5.0" cycles="1000"/>
        <Rotate name="rotate" chain="C" distribution="uniform" degrees="360" cycles="1000"/>
        <SlideTogether name="together" chains="C"/>
        <HighResDocker name="highdock" scorefxn="score_docking" cycles="9" repack_every_Nth="3" movemap_builder="docking" />    
         <FinalMinimizer name="mimimize" scorefxn="score_docking" movemap_builder="final"/>     
        <ParsedProtocol name="low_res_dock">
                   <!--<Add mover_name="fix"/>-->
                   <Add mover_name="trans"/>
                   <Add mover_name="rotate"/>
                   <Add mover_name="together"/>
        </ParsedProtocol>
        <ParsedProtocol name="high_res_dock">
                   <Add mover_name="highdock"/>
                   <Add mover_name="mimimize"/>
        </ParsedProtocol>
        <InterfaceAnalyzerMover name="iface_analyzer" packstat=0 pack_input=0 pack_separated=1 fixedchains=A tracer=0/>
        <Docking name="dock_high" score_high="score_docking" fullatom=1 local_refine=1  optimize_fold_tree=1 conserve_foldtree=0 design=0 jumps=1/>    
        <DockingProtocol name="dockp_high" docking_local_refine="true" dock_min="false" partners="C_A" />    
    </MOVERS>
        <APPLY_TO_POSE />
        <PROTOCOLS>
                <Add mover_name="low_res_dock"/>
                <Add mover_name="high_res_dock"/>
                <Add mover_name="dockp_high"/>
               <!-- <Add filter_name="irmds"/>-->
                <!--<Add mover_name="iface_analyzer"/>-->
                <!--<Add mover_name="add_scores"/>-->
        </PROTOCOLS>
</ROSETTASCRIPTS>
 

Command line:

DIR/rosetta_scripts.RELEASE -native FILENAME -s FILENAME -use_input_sc -nstruct 10 -ex1 -ex2aro -parser:protocol prot2.xml  -overwrite

Scores.sc output:

SEQUENCE: 
SCORE: total_score         rms        Fnat        I_sc        Irms   ...
SCORE:     -91.285        -nan       0.833      -1.473       0.000      ...
SCORE:     -99.662        -nan       0.778      -0.859       0.000   ...
SCORE:    -105.361        -nan       1.000      -1.271       0.000    ...
SCORE:     -79.505        -nan       1.000      -0.333       0.000    ...
SCORE:    -106.792        -nan       0.667      -0.158       0.000    ...

...

Post Situation: 
Wed, 2016-01-13 12:41
rbeier1

I would hazard a guess that the Irms and rms calculations are based on protein backbone c-alphas.  Those atoms aren't present in the moving side of your structure so it can't be calculated.  You'd have to go into the C++ and rewrite the calls to the RMS functions to use versions that measure some other atom set.  I'll take a look and see if it's straightforward.

Thu, 2016-01-14 08:05
smlewis

OK, here's a thing you can try.  I'm assuming you're comfortable editing code.

 

Open source/src/protocols/docking/metrics.cc.  Search for the function "calc_Lrmsd" (which controls rmsd) and function "calc_Irmsd".  At the end of both of these functions is a line like:

        Lrmsd += core::scoring::rmsd_no_super_subset( native_pose, pose, superpos_partner, is_protein_backbone );
        Irmsd += core::scoring::rmsd_with_super_subset( native_docking_pose, pose, is_interface, is_protein_backbone );

In both cases, change "is_protein_backbone" to "is_heavyatom" (You will notice for Irmsd there is a nearby commented-out line just like this).  Try recompiling (scons.py bin mode=release, like when you first compiled, but it won't take nearly as long) then re-running your experiment.

Thu, 2016-01-14 08:19
smlewis