You are here

nstruct vs. trials?

3 posts / 0 new
Last post
nstruct vs. trials?

In RosettaScripts,

we can specific the number of target structures for the script to design via the

-jd2: ntrials X 

flag where X is the number.

However, in the GenericMonteCarlo mover used for iterative design, we can also specify the number of iterations via the "trials" argument.

My question is, are there any advantages/disadvantages to setting the nstruct number low but setting the trials number high, and vice versa? 

My intuition is that if nstruct is low and trials is high, you will get a small number of designs with a high degree of convergence, whereas if you set nstruct high and trials low, you will get a large library of structures, but a lot of them won't necessarily have the best scores. Is this interpretation correct?

What values do people typically use here?

Post Situation: 
Mon, 2020-03-02 13:22

The -nstruct parameter is the one which typically controls the number of output structures. The -jd2:ntrials typically controls the number of "retries". Certain protocols have internal filters which result in an output structure failing (and thus not being output). The -jd2:ntrials setting allows you to control how many times Rosetta will restart the output structure if it fails during the protocol.

The trials argument in GenericMonteCarlo is something different altogether. The -nstruct/-ntrials options control job distribution, but for any particular output structure you actually get, those settings really have no effect. There's really no individual-output-structure-level change in the protocol which happens with those options. GenericMonteCarlo's ntrials option, on the other hand, directly controls the algorithm used. GenericMonteCarlo implements a Metropolis Monte Carlo scheme where a Mover is repeatedly applied, with an energy-based accept/reject. The ntrials option in the GenericMonteCarlo tag controls how many of those cycles occur for any given output structure.

The values you use for these parameters are dependent a bit on protocol you're doing and the amount of sampling it needs. Protocols which cover a lot of search space typically need a larger number of output structures (larger -nstruct), whereas rather constrained protocols may need much less. The value of the -jd2::ntrials option is probably less critical -- it's mainly useful if you want Rosetta to give you exactly nstruct outputs and you're getting too many filter failures. The GenericMonteCarlo option should be set based on how many potential applications of the mover you're interested in having for each output structure, which is really dependent on the protocol you're attempting to put together and how much sampling per output structure it needs.

Wed, 2020-03-04 09:52

Thank you for the reply. I understand it now.

Wed, 2020-03-04 10:49