You are here

Breaking fastDesign into more stages or writing something custom

2 posts / 0 new
Last post
Breaking fastDesign into more stages or writing something custom

I know that rosetta_scripts XML protocols can be run in PyRosetta, and I think there is also a specfic PyRosetta version of fastDesign.  But I'm wondering to what extent the underlying functions used in fastDesign (e.g. modifying constraint strengths, modifying vdw repulsion terms) can be written in PyRosetta directly such that some customization would be possible?


In particular I'd like to get out intermediate structures during the design (like one structure every 1000 MC steps let's say).  My current naive idea would be to break down each cycle of fastDesign into say ~100 steps, where the packer is run for 100x fewer steps than normal, a structure is output, and then the packer continues.  The same approach might apply to the minimizer, then the constraints and vdw-repulsions would be updated, and the next cycle would begin.


I've used PyRosetta only for scoring and manually forcing certain rotamers, so I don't have a good idea of whether what I want to do is even possible at the moment.




Post Situation: 
Mon, 2020-03-16 06:52

Three options:

1.  Use FastDesign as normal, but add the dump_trajectory energy to the energy function used for design.  This doesn't alter scoring in any way (the dump_trajectory scoreterm returns 0 for its energy, always), but it does dump a PDB file every Nth time the scorefunction is invoked.  Obviously, this slows things down a great deal.  For your purposes, this is probably the best option since it doesn't involve altering the packing algorithm, whereas breaking the trajectory up into tiny steps (1000 mutations is a very, very short sub-trajectory) and accepting the output of each tiny step before starting the next one is a major change to the algorithm.

2.  Alter the relax script.  This won't help you in your particular case (you can't trigger file output as a relax script command), but is useful if you want to change the energy ramping or the minimization tolerances or whatnot.

3.  Script a series of alternating calls to PackRotamersMover and MinMover.  This allows you to reproduce what FastDesign is doing but throw in additional steps in between (like PDB dumping).  However, see the comment for point 1: you'd only be able to dump PDBs between design and minimization steps.  This wouldn't let you dump structures in the middle of a packing trajectory.

For option #1, here's how you do it:


        <ScoreFunction name="scorefxn" weights="ref2015" >
            <Reweight scoretype="dump_trajectory" weight="1" />
        <FastDesign name="fdes" scorefxn="scorefxn" />
        <Add mover="fdes"/>


The commandline flag "-dump_trajectory:stride" determines how frequently structures are dumped.  Note that this will slow down the design process by a LOT (probably several hundred fold).

Tue, 2020-03-17 12:06