Enzdes: increase weight of energy term for steric clashes with ligand

Member Site Forums Rosetta 3 Rosetta 3 – Applications Enzdes: increase weight of energy term for steric clashes with ligand

Viewing 3 reply threads
  • Author
    • #2169

        Hi everyone,

        I am interested in redesigning an interface to bind a ligand and remove steric clashes. I have used enzyme design and it works very well except that it introduces some charged mutations to optimise binding interactions. I do not want mutations that improves interactions but rather ones that remove the clashes. My initial though is that there could be an energy term for ligand protein steric hinderance which I could increase its weighing factor in the energy function calculation. This way my total score will be more influenced by mutations that removes clashes between ligand and enzyme. But I do not know which of the terms below I could use and how to change the weighing factor;

        Scores from score.out file: total score = -202.18
        total_score fa_rep hbond_sc all_cst tot_pstat_pm tot_nlpstat_pm tot_burunsat_pm tot_hbond_pm tot_NLconts_pm tot_nlsurfaceE_pm tot_total_charge tot_total_pos_charges tot_total_neg_charges tot_seq_recovery SR_1 SR_1_total_score SR_1_fa_rep SR_1_hbond_sc SR_1_all_cst SR_1_hbond_pm SR_1_burunsat_pm SR_1_pstat_pm SR_1_nlpstat_pm SR_2 SR_2_total_score SR_2_fa_rep SR_2_hbond_sc SR_2_all_cst SR_2_hbond_pm SR_2_burunsat_pm SR_2_pstat_pm SR_2_nlpstat_pm SR_3 SR_3_total_score SR_3_fa_rep SR_3_hbond_sc SR_3_all_cst SR_3_hbond_pm SR_3_burunsat_pm SR_3_pstat_pm SR_3_nlpstat_pm SR_4 SR_4_total_score SR_4_fa_rep SR_4_hbond_sc SR_4_all_cst SR_4_hbond_pm SR_4_burunsat_pm SR_4_pstat_pm SR_4_nlpstat_pm SR_5 SR_5_total_score SR_5_fa_rep SR_5_hbond_sc SR_5_all_cst SR_5_hbond_pm SR_5_burunsat_pm SR_5_pstat_pm SR_5_nlpstat_pm SR_6 SR_6_total_score SR_6_fa_rep SR_6_hbond_sc SR_6_all_cst SR_6_hbond_pm SR_6_burunsat_pm SR_6_pstat_pm SR_6_nlpstat_pm SR_7 SR_7_total_score SR_7_fa_rep SR_7_hbond_sc SR_7_all_cst SR_7_interf_E_1_2 SR_7_dsasa_1_2 SR_7_hbond_pm SR_7_burunsat_pm description

        -202.18 58.10 -24.33 155.02 0.64 0.68 37.00 147.00 32.00 3.27 -1.00 20.00 21.00 0.32 12.00 -0.91 0.56 0.00 0.02 2.00 0.00 0.78 0.86 18.00 -1.94 0.18 -0.79 7.83 4.00 1.00 0.76 0.84 18.00 -1.94 0.18 -0.79 7.83 4.00 1.00 0.76 0.84 18.00 -1.94 0.18 -0.79 7.83 4.00 1.00 0.76 0.84 19.00 -0.92 0.65 -0.38 64.79 2.00 1.00 0.85 0.79 129.00 -0.58 0.12 -0.80 4.87 3.00 0.00 0.72 0.76 158.00 -0.86 0.33 -1.67 77.51 -1.73 0.62 5.00 3.00 input_docked_ligand__DE_253

        Also I was thinking of using the option favor native res in my flag file, but I am concerned this might impact every other residue including the clashing residues.
        What is the best way to do this; use rosetta to mutate residues clashing with a docked ligand without mutating non-clashing residues to polar residue in order to improve binding energy.

        I look forward to your brilliant ideas

      • #10890

          If you don’t want certain residues to mutate to certain identities, use a resfile: https://www.rosettacommons.org/docs/latest/resfiles.html

          With enzdes, you can specify the default behavior as AUTO, and then just control those residues which you have special requirements on. All residues with the AUTO behavior will use the default behavior of enzdes.

          To use the resfile, either specify it with the -in:file:resfile flag on the commandline of your enzdes application, or if you’re using the RosettaScripts version, just use the resfile option of DetectProteinLigandInterface (https://www.rosettacommons.org/docs/latest/TaskOperations-RosettaScripts.html#DetectProteinLigandInterface)

        • #10927

            Hi I have done the following:
            First after doing a couple of runs, I have identified specific areas which are being mutated on the interface with ligand. I have set up my resfile to mutate only residues in this areas. this has helped to speed up my design first and foremost. I have removed the option
            -enzdes::lig_packer_weight 2 which up-weighs interaction between protein and ligand against protein protein interaction and have added the option
            -enzdes::favor_native_res 2 to favour native residue and only design when really necessary.
            Is my understanding of these options and the approach of making resfile to mutate only residues in the interface that have been mutated during previous runs sensible?

            Another question I have is the starting structure. I manually docked my ligand into the active site with clashes, but having the phosphate in the right position. I measured the constraints based on this pose. Then I provided this as starting input for rosetta enzyme design. i was wondering if this is logical or there is a better way to start. My concern is the pose used might not be there best for this ligand binding to this substrate, although this ligand is not the usual substrate of this enzyme. Any advice on this?

          • #10966

              Dear Rocco,
              Thanks for your advice. I noticed that in all my structures, there was virtually no movement on the ligand. This is due to 2 main reasons: the fact that my constrains were directed at the oxygen atoms hence that phosphate was locked in position and cant rotate. secondly the neighbour atom (which I did not know about until now) is not phosphorus. It is centralised and going by your explanation, superposing this atom is likely going to give more or less the same pose.

              I used the following command to create the .params file.
              ~/rosetta3.5_30.57114/main/source/src/python/apps/public/molfile_to_params.py -n EY1 -p EY1 ligand_conformers.mol2

              However, I do not know how to set the neighbour atom during this process, and it seems like that atom was selected by default. I can change it now in the text editor, but I am afraid I will not get the radius correctly, as it has to be done manually.
              How do I set the neighbour atom in creating the params file ?
              and if I change it in text editor what is the consequence of my radius not being exactly correct (distance from neighbour atom to furthest heavy atom)?
              thanks in advance for your support.

            • #10956

                The logic in the first paragraph sounds reasonable to me.

                If you have ligand conformers (ligand rotamers) properly set up (you should have a PDB_ROTAMERS line in your params file), Rosetta will attempt to find an internal conformation of the ligand which minimizes the clashes, assuming that you have your resfile set to allow the ligand residue to repack.

                The other thing you’ll want to check is what the neighbor atom is on your ligand. Rosetta will swap conformers by superimposing the neighbor atom, so the neighbor atom should be set to an atom which you want to stay relatively stable — in your case, I’d recommend setting the phosphorus atom as the neighbor atom, as you have your constraints centered around the phosphate position. This will allow the rest of the ligand to repack without changing the position of the phosphate too much. You can either specify the neighbor atom when you create the params file, or edit it with a text editor afterwards. If you take the latter route, be sure to change the NBR_RADIUS to be the distance from the neighbor atom to the furthest heavy atom in any conformer.

              • #10971

                  If you get the radius too small, then Rosetta may miss some residue-residue interactions. (The neighbor radius is used to do a quick check if two residues are in interaction range – since the neighbor radius is the furthest from the neighbor atom any heavy atom can be, if two residues have neighbor atoms more than nbr_radisu1 + nbr_radius2 + max_interaction_distance apart, then they shouldn’t interact, regardless of where the heavy atoms are.) If it’s too large, you just slow the computations down due to evaluating more interactions (which all end up being zero anyway). — So in general, it’s safe to make a good estimate and pad it by a couple of Angstroms.

                  If you want to use molfile_to_params.py to calculate it for you, you just need to add an “m_ctrl” file to the commandline. This is just a text file which specifies which atom number you want to use for the neighbor atom. Run “~/rosetta3.5_30.57114/main/source/src/python/apps/public/molfile_to_params.py -h” for details. (I recommend using the same atom for the neighbor and root atoms.)

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