Hi,
I am trying to figure out the difference between sampler and optimizer. When each one should be used/developed? What is the relationship between them? How each one works with restraints and scoring functions?
Dina
An optimizer attempts to improve the current configuration of the Model by modifying optimized particle attributes so as to lower the score (there are some exceptions such as Brownian Dynamics when in equilibrium, but those are, I think, self-explanatory). The primary effect is to change particle attributes.
A Sampler in contrast tries to produce a number of good configurations of the Model, often completely ignoring the Model's starting configuration (by randomizing particles, for example). It returns ConfigurationSet that allows you to load a configuration into the Model and then view it, save it or score it. The final state of the particles after using a Sampler is undefined.
Each of Optimizer and Sampler can be given a ScoringFunction that will then be used when evaluating and optimizing. By default it is Model::create_scoring_function(), but one created with any other set of restraints (a ScoringFunction will be created on the fly from a list of restraints if you pass one instead).
On Fri, May 18, 2012 at 1:22 PM, Dina Schneidman duhovka@gmail.com wrote:
> Hi, > > I am trying to figure out the difference between sampler and optimizer. > When each one should be used/developed? What is the relationship between > them? > How each one works with restraints and scoring functions? > > Dina > _______________________________________________ > IMP-dev mailing list > IMP-dev@salilab.org > https://salilab.org/mailman/listinfo/imp-dev >
Daniel, this classification is still confusing. In general, a sampler is a conformation generation scheme that follows a probability distribution: uniform (as in the example given by Daniel), Boltzmann (constant temperature MD or BD, as well as Monte Carlo with set_return_best(False)) or posterior probability (such as the Gibbs sampling in ISD).
An optimizer instead only aims at lowest energies (Conjugated Gradient, Steepest Descent... Monte Carlo with set_return_best(True))
On Fri, May 18, 2012 at 2:13 PM, Daniel Russel drussel@gmail.com wrote: > An optimizer attempts to improve the current configuration of the Model by > modifying optimized particle attributes so as to lower the score (there are > some exceptions such as Brownian Dynamics when in equilibrium, but those > are, I think, self-explanatory). The primary effect is to change particle > attributes. > > A Sampler in contrast tries to produce a number of good configurations of > the Model, often completely ignoring the Model's starting configuration (by > randomizing particles, for example). It returns ConfigurationSet that allows > you to load a configuration into the Model and then view it, save it or > score it. The final state of the particles after using a Sampler is > undefined. > > Each of Optimizer and Sampler can be given a ScoringFunction that will then > be used when evaluating and optimizing. By default it is > Model::create_scoring_function(), but one created with any other set of > restraints (a ScoringFunction will be created on the fly from a list of > restraints if you pass one instead). > > > On Fri, May 18, 2012 at 1:22 PM, Dina Schneidman duhovka@gmail.com wrote: >> >> Hi, >> >> I am trying to figure out the difference between sampler and optimizer. >> When each one should be used/developed? What is the relationship between >> them? >> How each one works with restraints and scoring functions? >> >> Dina >> _______________________________________________ >> IMP-dev mailing list >> IMP-dev@salilab.org >> https://salilab.org/mailman/listinfo/imp-dev > > > > _______________________________________________ > IMP-dev mailing list > IMP-dev@salilab.org > https://salilab.org/mailman/listinfo/imp-dev >
I agree with Riccardo. If I understand correctly, a sampler is some sort of ensemble generator isn't it? Is it equivalent to run the sampler once and an optimizer N times (one like brownian dynamics, that would return N different suboptimal states)?
Le 19/05/12 00:28, Riccardo Pellarin a écrit : > Daniel, this classification is still confusing. > In general, a sampler is a conformation generation scheme that follows a > probability distribution: uniform (as in the example given by Daniel), > Boltzmann (constant temperature MD or BD, as well as Monte Carlo with > set_return_best(False)) or posterior probability (such as the Gibbs > sampling in ISD). > > An optimizer instead only aims at lowest energies (Conjugated > Gradient, Steepest Descent... Monte Carlo with set_return_best(True)) > > On Fri, May 18, 2012 at 2:13 PM, Daniel Russeldrussel@gmail.com wrote: >> An optimizer attempts to improve the current configuration of the Model by >> modifying optimized particle attributes so as to lower the score (there are >> some exceptions such as Brownian Dynamics when in equilibrium, but those >> are, I think, self-explanatory). The primary effect is to change particle >> attributes. >> >> A Sampler in contrast tries to produce a number of good configurations of >> the Model, often completely ignoring the Model's starting configuration (by >> randomizing particles, for example). It returns ConfigurationSet that allows >> you to load a configuration into the Model and then view it, save it or >> score it. The final state of the particles after using a Sampler is >> undefined. >> >> Each of Optimizer and Sampler can be given a ScoringFunction that will then >> be used when evaluating and optimizing. By default it is >> Model::create_scoring_function(), but one created with any other set of >> restraints (a ScoringFunction will be created on the fly from a list of >> restraints if you pass one instead). >> >> >> On Fri, May 18, 2012 at 1:22 PM, Dina Schneidmanduhovka@gmail.com wrote: >>> Hi, >>> >>> I am trying to figure out the difference between sampler and optimizer. >>> When each one should be used/developed? What is the relationship between >>> them? >>> How each one works with restraints and scoring functions? >>> >>> Dina >>> _______________________________________________ >>> IMP-dev mailing list >>> IMP-dev@salilab.org >>> https://salilab.org/mailman/listinfo/imp-dev >> >> >> _______________________________________________ >> IMP-dev mailing list >> IMP-dev@salilab.org >> https://salilab.org/mailman/listinfo/imp-dev >> > _______________________________________________ > IMP-dev mailing list > IMP-dev@salilab.org > https://salilab.org/mailman/listinfo/imp-dev
On May 19, 2012, at 3:13 AM, Yannick Spill wrote:
> I agree with Riccardo. If I understand correctly, a sampler is some sort of ensemble generator isn't it? To put it another way, in IMP, and Optimizer optimizes the current model in some way, where as a Sampler produces a sample using some scheme.
> Is it equivalent to run the sampler once and an optimizer N times (one like brownian dynamics, that would return N different suboptimal states)? It could be, depending on the sampler (one would typically want to do more than just run an optimizer in order to sample well). That is, running BD n times is a rather worse way of sampling than say, repeating n iterations of randomizing and then running BD (assuming you can randomize well). One has to balance local steps with large ones and all our optimizers are local in various senses.
> > Le 19/05/12 00:28, Riccardo Pellarin a écrit : >> Daniel, this classification is still confusing. >> In general, a sampler is a conformation generation scheme that follows a >> probability distribution: uniform (as in the example given by Daniel), >> Boltzmann (constant temperature MD or BD, as well as Monte Carlo with >> set_return_best(False)) or posterior probability (such as the Gibbs >> sampling in ISD). >> >> An optimizer instead only aims at lowest energies (Conjugated >> Gradient, Steepest Descent... Monte Carlo with set_return_best(True)) >> >> On Fri, May 18, 2012 at 2:13 PM, Daniel Russeldrussel@gmail.com wrote: >>> An optimizer attempts to improve the current configuration of the Model by >>> modifying optimized particle attributes so as to lower the score (there are >>> some exceptions such as Brownian Dynamics when in equilibrium, but those >>> are, I think, self-explanatory). The primary effect is to change particle >>> attributes. >>> >>> A Sampler in contrast tries to produce a number of good configurations of >>> the Model, often completely ignoring the Model's starting configuration (by >>> randomizing particles, for example). It returns ConfigurationSet that allows >>> you to load a configuration into the Model and then view it, save it or >>> score it. The final state of the particles after using a Sampler is >>> undefined. >>> >>> Each of Optimizer and Sampler can be given a ScoringFunction that will then >>> be used when evaluating and optimizing. By default it is >>> Model::create_scoring_function(), but one created with any other set of >>> restraints (a ScoringFunction will be created on the fly from a list of >>> restraints if you pass one instead). >>> >>> >>> On Fri, May 18, 2012 at 1:22 PM, Dina Schneidmanduhovka@gmail.com wrote: >>>> Hi, >>>> >>>> I am trying to figure out the difference between sampler and optimizer. >>>> When each one should be used/developed? What is the relationship between >>>> them? >>>> How each one works with restraints and scoring functions? >>>> >>>> Dina >>>> _______________________________________________ >>>> IMP-dev mailing list >>>> IMP-dev@salilab.org >>>> https://salilab.org/mailman/listinfo/imp-dev >>> >>> >>> _______________________________________________ >>> IMP-dev mailing list >>> IMP-dev@salilab.org >>> https://salilab.org/mailman/listinfo/imp-dev >>> >> _______________________________________________ >> IMP-dev mailing list >> IMP-dev@salilab.org >> https://salilab.org/mailman/listinfo/imp-dev > > _______________________________________________ > IMP-dev mailing list > IMP-dev@salilab.org > https://salilab.org/mailman/listinfo/imp-dev
On May 18, 2012, at 3:28 PM, Riccardo Pellarin wrote:
> Daniel, this classification is still confusing. > In general, a sampler is a conformation generation scheme that follows a > probability distribution: uniform (as in the example given by Daniel), > Boltzmann (constant temperature MD or BD, as well as Monte Carlo with > set_return_best(False)) or posterior probability (such as the Gibbs > sampling in ISD). > > An optimizer instead only aims at lowest energies (Conjugated > Gradient, Steepest Descent... Monte Carlo with set_return_best(True)) Just to stir the pot a bit, isn't that just another distribution (that of the lowest energy state seen in k MC steps starting from X)? And a very nice one in that we have a simple and guaranteed way of sampling from it in an unbiased manner (unlike the Boltzman distribution on our scores where we never can be quite sure we are unbiased) :-)
> > On Fri, May 18, 2012 at 2:13 PM, Daniel Russel drussel@gmail.com wrote: >> An optimizer attempts to improve the current configuration of the Model by >> modifying optimized particle attributes so as to lower the score (there are >> some exceptions such as Brownian Dynamics when in equilibrium, but those >> are, I think, self-explanatory). The primary effect is to change particle >> attributes. >> >> A Sampler in contrast tries to produce a number of good configurations of >> the Model, often completely ignoring the Model's starting configuration (by >> randomizing particles, for example). It returns ConfigurationSet that allows >> you to load a configuration into the Model and then view it, save it or >> score it. The final state of the particles after using a Sampler is >> undefined. >> >> Each of Optimizer and Sampler can be given a ScoringFunction that will then >> be used when evaluating and optimizing. By default it is >> Model::create_scoring_function(), but one created with any other set of >> restraints (a ScoringFunction will be created on the fly from a list of >> restraints if you pass one instead). >> >> >> On Fri, May 18, 2012 at 1:22 PM, Dina Schneidman duhovka@gmail.com wrote: >>> >>> Hi, >>> >>> I am trying to figure out the difference between sampler and optimizer. >>> When each one should be used/developed? What is the relationship between >>> them? >>> How each one works with restraints and scoring functions? >>> >>> Dina >>> _______________________________________________ >>> IMP-dev mailing list >>> IMP-dev@salilab.org >>> https://salilab.org/mailman/listinfo/imp-dev >> >> >> >> _______________________________________________ >> IMP-dev mailing list >> IMP-dev@salilab.org >> https://salilab.org/mailman/listinfo/imp-dev >> > _______________________________________________ > IMP-dev mailing list > IMP-dev@salilab.org > https://salilab.org/mailman/listinfo/imp-dev