Class MonteCarloOST

java.lang.Object
ffx.algorithms.mc.BoltzmannMC
ffx.algorithms.thermodynamics.MonteCarloOST
All Implemented Interfaces:
MetropolisMC

public class MonteCarloOST extends BoltzmannMC
Sample a thermodynamic path using the OST method, with the time-dependent bias built up using Metropolis Monte Carlo steps.

The algorithm generates coordinate (X) MC moves using molecular dynamics at a fixed lambda value (i.e. using OpenMM), followed by MC lambda moves.

1.) At a fixed Lambda, run a defined length MD trajectory to "move" coordinates and dU/dL on an approximate potential U* (i.e. no OST Bias).

2.) Accept / Reject the MD move with probability exp[-Beta(dU - dU*)] where dU is the change in AMOEBA + Bias energy and dU* is the change in AMOEBA + Kinetic energy from the MD.

3.) Randomly change the value of Lambda.

4.) Accept / Reject the Lambda move using the AMOEBA + OST Bias energy.

5.) Add to the time dependent 2D bias using the current values of Lambda and dU/dL.

Since:
1.0
Author:
Michael J. Schnieders, Hernan Beranbe, Mallory R. Tollefson, Jacob Litman
  • Constructor Details Link icon

  • Method Details Link icon

    • getLambda Link icon

      public double getLambda()
      Returns the current value of lambda
      Returns:
      lambda
    • setLambda Link icon

      public void setLambda(double lambda)
      Calls on the OST method set lambda to update lambda to the current value in this class
      Parameters:
      lambda - a double.
    • getMD Link icon

      public MolecularDynamics getMD()
    • sampleOneStep Link icon

      public void sampleOneStep()
      The goal is to sample lambda and coordinates (X) simultaneously to converge the ensemble average dU/dL for every state (lambda) along the thermodynamic path. Note that the order of 1 invalid input: '&' 2 below can be swapped (i.e. run MD and then change lambda). Here the order is random for each trial.

      1.) Randomly change the value of Lambda.

      2.) At the proposed lambda, run a am MD trajectory to "move" coordinates and dU/dL.

      3.) Accept / Reject the Lambda + MD move using the total Hamiltonian (Kinetic energy + OST energy).

      4.) Add to the bias.

    • sampleTwoStep Link icon

      public void sampleTwoStep()
      The goal is to sample lambda and coordinates (X) separately to converge the ensemble average dU/dL for every state (lambda) along the thermodynamic path.

      1.) At a fixed lambda, run a defined length MD trajectory to "move" coordinates and dU/dL.

      2.) Accept / Reject the MD move using the total Hamiltonian (Kinetic energy + OST energy).

      3.) Randomly change the value of Lambda.

      4.) Accept / Reject the Lambda move using the OST energy.

      5.) Add a hill to the histogram.

    • setAutomaticWriteouts Link icon

      public void setAutomaticWriteouts(boolean autoWrite)
    • setEquilibration Link icon

      public void setEquilibration(boolean equilibration)
      Sets the value of the boolean equilibration variables to true or false to either allow an equilibration step or skip it.
      Parameters:
      equilibration - a boolean.
    • setLambdaStdDev Link icon

      public void setLambdaStdDev(double stdDev)
      Calls on LambdaMove class method setLambdaStdDev to update the lambda standard deviation to the current value in this class
      Parameters:
      stdDev - a double.
    • setTotalSteps Link icon

      public void setTotalSteps(long totalSteps)
      Sets the next number of steps MC-OST should run.
      Parameters:
      totalSteps - The length of the next MC-OST run.
    • revertStep Link icon

      public void revertStep()
      If possible, reverts the last successful Monte Carlo step taken.
    • currentEnergy Link icon

      protected double currentEnergy()
      Must return the current energy of the system.
      Specified by:
      currentEnergy in class BoltzmannMC
      Returns:
      Current system energy
    • storeState Link icon

      protected void storeState()
      Store the state for reverting a move. Must be properly implemented for revertStep() to function properly; otherwise, the implementation of revertStep() should throw an OperationNotSupportedException.
      Specified by:
      storeState in class BoltzmannMC