Enzyme design with variable CST blocks possible?

Member Site Forums Rosetta 3 Rosetta 3 – Applications Enzyme design with variable CST blocks possible?

Viewing 4 reply threads
  • Author
    Posts
    • #1048
      Anonymous

        I am wondering if it is possible to use the enzyme design algorithm with a cst file containing variable cst blocks used for matching. I am using the following cst file for my matching:


        #block 1 - Malimide-Cys
        CST::BEGIN
        TEMPLATE:: ATOM_MAP: 1 atom_name: C1 C2 H1
        TEMPLATE:: ATOM_MAP: 1 residue3: HAS

        TEMPLATE:: ATOM_MAP: 2 atom_name: SG CB CA
        TEMPLATE:: ATOM_MAP: 2 residue1: C

        CONSTRAINT:: distanceAB: 1.85 0.20 240.00 1 1
        CONSTRAINT:: angle_A: 105.00 10.00 58.00 360.00 1
        CONSTRAINT:: angle_B: 95.00 15.00 34.00 360.00 2
        CONSTRAINT:: torsion_A: 120.00 8.00 0.50 360.00 1
        CONSTRAINT:: torsion_B: 180.00 10.00 0.30 120.00 1
        CONSTRAINT:: torsion_AB: 180.00 10.00 0.30 120.00 2
        CST::END

        #block 2 - CN1 H-bond
        VARIABLE_CST::BEGIN
        #sub-block - amide sidechain donor
        CST::BEGIN
        TEMPLATE:: ATOM_MAP: 1 atom_name: N3 FE1 S2
        TEMPLATE:: ATOM_MAP: 1 residue3: HAS

        TEMPLATE:: ATOM_MAP: 2 atom_type: NH2O
        TEMPLATE:: ATOM_MAP: 2 residue1: NQ

        CONSTRAINT:: distanceAB: 3.10 0.20 60.00 1 1
        CONSTRAINT:: angle_A: 170.00 10.00 15.00 360.00 2
        CONSTRAINT:: angle_B: 120.00 10.00 40.00 360.00 2
        CONSTRAINT:: torsion_A: 210.00 166.15 0.00 360.00 6
        CONSTRAINT:: torsion_B: 0.00 10.00 40.00 180.00 1
        CONSTRAINT:: torsion_AB: 140.00 166.15 0.00 360.00 6
        CST::END

        #sub-block - backbone amide donor
        CST::BEGIN
        TEMPLATE:: ATOM_MAP: 1 atom_name: N3 FE1 S2
        TEMPLATE:: ATOM_MAP: 1 residue3: HAS

        TEMPLATE:: ATOM_MAP: 2 atom_name: N CA H
        TEMPLATE:: ATOM_MAP: 2 is_backbone

        CONSTRAINT:: distanceAB: 3.10 0.20 60.00 1 2
        CONSTRAINT:: angle_A: 160.00 20.00 15.00 360.00 3
        CONSTRAINT:: angle_B: 120.00 10.00 40.00 360.00 2
        CONSTRAINT:: torsion_A: 150.00 166.15 0.00 360.00 6
        CONSTRAINT:: torsion_B: 0.00 10.00 40.00 360.00 1
        CONSTRAINT:: torsion_AB: 140.00 166.15 0.00 360.00 6
        CST::END
        VARIABLE_CST::END

        #block 3 - CN2 H-bond
        VARIABLE_CST::BEGIN
        #sub-block - amide sidechain donor
        CST::BEGIN
        TEMPLATE:: ATOM_MAP: 1 atom_name: N4 FE2 S1
        TEMPLATE:: ATOM_MAP: 1 residue3: HAS

        TEMPLATE:: ATOM_MAP: 2 atom_type: NH2O
        TEMPLATE:: ATOM_MAP: 2 residue1: NQ

        CONSTRAINT:: distanceAB: 3.10 0.20 60.00 1 1
        CONSTRAINT:: angle_A: 170.00 10.00 15.00 360.00 2
        CONSTRAINT:: angle_B: 120.00 10.00 40.00 360.00 2
        CONSTRAINT:: torsion_A: 210.00 166.15 0.00 360.00 6
        CONSTRAINT:: torsion_B: 0.00 10.00 40.00 180.00 1
        CONSTRAINT:: torsion_AB: 140.00 166.15 0.00 360.00 6
        CST::END

        #sub-block - backbone amide donor
        CST::BEGIN
        TEMPLATE:: ATOM_MAP: 1 atom_name: N4 FE2 S1
        TEMPLATE:: ATOM_MAP: 1 residue3: HAS

        TEMPLATE:: ATOM_MAP: 2 atom_name: N CA H
        TEMPLATE:: ATOM_MAP: 2 is_backbone

        CONSTRAINT:: distanceAB: 3.10 0.20 60.00 1 2
        CONSTRAINT:: angle_A: 160.00 20.00 15.00 360.00 3
        CONSTRAINT:: angle_B: 120.00 10.00 40.00 360.00 2
        CONSTRAINT:: torsion_A: 150.00 166.15 0.00 360.00 6
        CONSTRAINT:: torsion_B: 0.00 10.00 40.00 360.00 1
        CONSTRAINT:: torsion_AB: 140.00 166.15 0.00 360.00 6
        CST::END
        VARIABLE_CST::END

        #block 4 - CN1-Lys/Arg h-bond
        VARIABLE_CST::BEGIN
        #sub-block - lysine N
        CST::BEGIN
        TEMPLATE:: ATOM_MAP: 1 atom_name: N3 FE1 S2
        TEMPLATE:: ATOM_MAP: 1 residue3: HAS

        TEMPLATE:: ATOM_MAP: 2 atom_name: NZ CE 1HZ
        TEMPLATE:: ATOM_MAP: 2 residue1: K

        CONSTRAINT:: distanceAB: 2.80 0.20 50.00 1 1
        CONSTRAINT:: angle_A: 110.00 15.00 10.00 360.00 2
        CONSTRAINT:: angle_B: 109.50 10.00 40.00 360.00 2
        CONSTRAINT:: torsion_A: 210.00 166.15 0.00 360.00 6
        CONSTRAINT:: torsion_B: 0.00 10.00 40.00 360.00 1
        CONSTRAINT:: torsion_AB: 140.00 166.15 0.00 360.00 6
        CST::END

        #sub-block - arginine Ne
        CST::BEGIN
        TEMPLATE:: ATOM_MAP: 1 atom_name: N3 FE1 S2
        TEMPLATE:: ATOM_MAP: 1 residue3: HAS

        TEMPLATE:: ATOM_MAP: 2 atom_name: NE CD HE
        TEMPLATE:: ATOM_MAP: 2 residue1: R

        CONSTRAINT:: distanceAB: 2.80 0.20 50.00 1 1
        CONSTRAINT:: angle_A: 110.00 10.00 10.00 360.00 2
        CONSTRAINT:: angle_B: 120.00 10.00 40.00 360.00 2
        CONSTRAINT:: torsion_A: 210.00 166.15 0.00 360.00 6
        CONSTRAINT:: torsion_B: 0.00 10.00 40.00 180.00 1
        CONSTRAINT:: torsion_AB: 140.00 166.15 0.00 360.00 6
        CST::END

        #sub-block - arginine Nh
        CST::BEGIN
        TEMPLATE:: ATOM_MAP: 1 atom_name: N3 FE1 S2
        TEMPLATE:: ATOM_MAP: 1 residue3: HAS

        TEMPLATE:: ATOM_MAP: 2 atom_name: NH1 CZ 1HH1
        TEMPLATE:: ATOM_MAP: 2 residue1: R

        CONSTRAINT:: distanceAB: 2.80 0.20 50.00 1 1
        CONSTRAINT:: angle_A: 110.00 10.00 10.00 360.00 2
        CONSTRAINT:: angle_B: 120.00 10.00 40.00 360.00 2
        CONSTRAINT:: torsion_A: 210.00 166.15 0.00 360.00 6
        CONSTRAINT:: torsion_B: 0.00 10.00 40.00 180.00 1
        CONSTRAINT:: torsion_AB: 140.00 166.15 0.00 360.00 6
        CST::END
        VARIABLE_CST::END

        But when I use the constraint file for enzyme design, I get an error:


        ...
        protocols.toolbox.match_enzdes_util.EnzConstraintIO: read enzyme constraints from ../HAS_C_NQbb_NQbb_KR_1.cst ... done, 4 cst blocks were read.
        protocols.toolbox.match_enzdes_util.EnzConstraintIO: Generating constraints for pose...
        protocols.toolbox.match_enzdes_util.EnzConstraintParameters: for block 1, 6 newly generated constraints were added
        protocols.toolbox.match_enzdes_util.EnzConstraintIO: checking cst data consistency for block 1... done
        protocols.toolbox.match_enzdes_util.EnzConstraintIO: Cst Block 1done...
        protocols.toolbox.match_enzdes_util.EnzConstraintParameters: for block 3, 4 newly generated constraints were added
        protocols.toolbox.match_enzdes_util.EnzConstraintIO: checking cst data consistency for block 2... done
        protocols.toolbox.match_enzdes_util.EnzConstraintIO: Cst Block 2done...
        param_cache_.size:4 cst_block:5
        cst_block should be smaller or equal to param_cache_.size()

        ERROR: cst_block <= param_cache_.size()
        ERROR:: Exit from: src/protocols/toolbox/match_enzdes_util/EnzdesCstCache.cc line: 83

        It runs fine when I only include the 4 blocks in the cst that are relevant to the particular site I'm designing, but it seems unreasonable to have to do this for every single match result. Is there any way to run the enzyme design program with the variable cst blocks I used in the match program?

        Thanks,
        -Igor

      • #6108
        Anonymous

          hey igor,

          the VARIABLE_CST thing is an unofficial feature at the moment that only the matcher supports, so even if it does sound unreasonable to make a cst file for every particular type of site for the enzyme_design app, that’s unfortunately what you have to do at the moment. looks like in your case that will be 2*2*3=12 cstfiles.
          i’ll try to code that feature into the enzyme design app at some point in the future, and can let you know once that happens.

          one question: how did you become aware of this feature? i don’t think I wrote documentation about it.

          a few more comments on your cstfile, if you allow me
          1) you declared everything to be covalent, but from the geometry specified it seems that only the first interaction, the Cys, is actually a covalent bond. so i’d switch the other blocks to non-covalent.

          2) for the 4th block, you can specify the arginine NE and NH in the same block by saying
          TEMPLATE:: ATOM_MAP: 2 atom_name: NE CD HE
          TEMPLATE:: ATOM_MAP: 2 atom_name: NH1 CZ 1HH1
          TEMPLATE:: ATOM_MAP: 2 residue1: R

          that way you only have to generate 2*2*2=8 cst files.

          3) how’s the match/enzyme design code working for you in general?

          cheers,
          florian

        • #6113
          Anonymous

            hey igor,

            multiple atom name definitions work in both matcher and enzdes. in enzdes, the code will always evaluate the constraint score for all possibilities, but only apply the lowest observed constraint penalty. i.e. whichever one of the possible atoms is best suited to satisfy the constraint will be enforced.

            regarding your other question, sorry to disappoint you again, but that’s not really possible. the reason is that if you do this, you’re defining a constraint that includes three different residues (assuming that the NE2 and CD of ATOM_MAP: 1 records are on a different upstream residue than the NE and CD atoms of the ATOM_MAP: 2 records), and if you have a constraint that includes 3 different residues your energy function isn’t rotamer pairwise decomposable anymore. which in turn means that rotamer packing/design calculations couldn’t be carried out efficiently anymore.

            also, have you played around with secondary matching for some of your less well defined constraints? my prediction is that you’ll get more matches.

            cheers,
            florian

          • #6121
            Anonymous

              hey,
              re matching a ligand with less than three atoms
              yes, with secondary matching this problem would disappear. if you use classic matching, you should set the euler bin size of the matcher to 360 (option -match::euler_bin_size ), and then it should be fine if you set the torsion_A and torsion_AB and angle_A parameters to one value only. this works with 1 atom ligands (i.e. metals), i’m not sure how it would work with two atom ligands

              re matching/enzdes at interface.
              that’s totally possible, as long as the ligand is the last residue in the pdb file (which is where the matcher will put it). for matching, you have to specify the match positions in absolute numbering though, i.e. if chain A and B both have 100 residues, and residue 40 of chain B should be considered by the matcher, this would be residue 140 in the match positions file.

              re His in cstfile
              HIS specifies both HIS and HIS_D, it’s actually impossible at the moment to only specify one of them
              Nhis specifies NE2 in HIS_D and ND1 in HIS, however the constraint is applied to the atom that is of type Nhis at the time the constraint is setup. i.e. sometimes the wrong protonation state could be set in the packer. at some point i’ll get around to fixing that bug.

              cheers,
              florian

            • #6133
              Anonymous

                Florian,

                Thanks again for the helpful responses.

                In regards to the HIS issue, one of my colleagues has actually been having a problem. The “ligand” that he is trying to position is constrained with interactions to various HIS residues. The matcher seems to give a reasonable result, with some HIS using Nd and some Ne. But when that output is used as input to the enzyme design application, some of the nitrogens that are supposed to be coordinating the “ligand” become protonated. It’d be really nice if there were a way to specify a different residue for a different protonation state of HIS.

                In any case, thanks for your help.

                -Igor

              • #6110
                Anonymous

                  Hi Florian,

                  Thanks for the quick and thorough response! First let me answer question (1), yes, the rest should be non-covalent; that’s what I get for copy/pasting. :P

                  Let me also thank you for taking the time to write thorough user manual entries and tutorials about these programs. They were very helpful. In general, the programs are working quite well, when I set up my files properly. I had some instances at first where I allowed to much flexibility and ran out of RAM in the matcher. :P But in general it is going as smoothly as a learning experience can.

                  As for the VARIABLE_CST blocks, they were used in one of the integration tests in Rosetta 3.2.

                  Thanks for the tip on the multiple “atom_name” definitions. I do have a question about that though – does that work in enzyme design as well, and if so, how does the program know which of the two atom sets to use for the constraint?

                  Thanks,
                  -Igor

                  EDIT: P.S. I am also wondering how something like this can be done:

                  I want to define a constraint like this:

                  TEMPLATE:: ATOM_MAP: 1 atom_name: N3 NE2 CD

                  TEMPLATE:: ATOM_MAP: 2 atom_name: NE CD HE

                  Where N3 is on the ligand and NE2 and CD are atoms on the sidechain of an upstream match. Is there any way to do something like this? Basically, to have a secondary constraint defined through a ligand atom?

                  Thanks.

                • #6115
                  Anonymous

                    Hi Florian,

                    Thanks again. I didn’t think the secondary match via a ligand atom would be possible, but I thought I’d ask, just in case. I appreciate the detailed explanation.

                    Also, thanks for reminding me about secondary constraints and that they are not just for defining constraints with other residues. Remembering this, I think also solves a problem I was struggling with for another task – how to match a ligand composed of less than three atoms. I was concerned about the binning of orientations and how many torsional degrees of freedom I’d need to allow, because the position of the third dummy atom doesn’t matter for me, but with secondary constraints I think that problem disappears!

                    Thanks,
                    – Igor

                    P.S. Now I have another question – is it possible to run matcher and enzyme design to design a ligand binding site at a protein interface. I.e. I have two chains in a crystal structure and I want to bind a ligand at the interface. I don’t need to reposition either of the protein monomers with respect to each other (which, as far as I understand can’t be done yet), just find a binding site and redesign the sidechains of both monomers as they are positioned.

                    EDIT: P.P.S. Does resname “HIS” in the cst file imply both HIS and HIS_D to the matcher/enzdes, or do I have to specify HIS_D separately? Or put another way, would this work to specify that both deprotonated Ne and Nd are allowed to satisfy this constraint:

                    TEMPLATE:: ATOM_MAP: 2 atom_name: Nhis,
                    TEMPLATE:: ATOM_MAP: 2 residue3: HIS

                    Or do I have to do something different?

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