SideChainPrediction Block in Pele++ control file

This block configures the Side Chain Prediction phase in a peleSimulation command, or the Side Chain Prediction execution of a sideChainSimulation command. In a peleSimulation, this phase will be active depending on the sideChainPredictionFrequency PELE parameter (sideChainPredictionFrequency).

The side chain prediction will be applied to the set of links formed by:

  • if sideChainPredictionRegionRadius (sideChainPredictionRegionRadius) is not zero, then the links to perturb (if the perturbation phase is active) and all those other links that are at most sideChainPredictionRegionRadius \(\AA{}\) away from the links to perturb.

  • the top side links, which are those links that worsen their energy the most between the beginning of a PELE step and the end of the perturbation and ANM phase. The number of these links is selected by the PELE parameter numberOfTopSideSelectedLinks (numberOfTopSideSelectedLinks). Also the links that are at most topSideRadius \(\AA{}\) away from the top side links (topSideRadius) will be included.

  • the links selected with selectionToInclude (selectionToInclude).

  • removing, from all the links previously selected, those links in selectionToOmit (selectionToOmit).

Notice that links without side chains and cross linked cysteines are not considered in the side chain prediction.

Algorithm selection

algorithm

Use: It sets the side chain prediction algorithm that will be used.

Possible options:

  • “zhexin”: Iterative algorithm that predicts the side chain conformation for each link until it reaches convergence

  • “boltzmannSampling”: Algorithm that samples the rotamers according to the Boltzmann distribution at a given temperature T

Default value: "zhexin".

Brief description of the algorithms

  • Zhexin algorithm: It is an iterative algorithm that tries to find the most likely rotamer. To do so, it clusters the rotamers and estimates the partition function. It chooses the rotamer that has the greatest contribution. It is performed several times, until convergence is reached.

  • Boltzmann Sampling: It chooses a random rotamer according to the Boltzmann distribution. For all the non-clashing rotamers, their energies are evaluated and assigned their Boltzmann weight \(\frac{e^{-\beta E}}{\sum e^{-\beta E}}\). One is chosen according to this weight.

Parameters

resolution

Parameter: double gridres

Use: Resolution of the rotamer library to be used for the ‘non-polar’ part of non-ligand links (the polar part always uses the resolution given in the link-type rotamer library file for the polar atom). Ligand links always use the resolution stated in the rotamer library file for that link; therefore this parameter does not affect them. The angles a rotamer can take are divided in bins of length ‘gridres’ degrees.

Note for developers: Used all along the side chain prediction.

Units: Degrees

Range: It can take any value, generally 10, 20, 30, 40 (these are the only values allowed for standard protein residues). If an unsupported resolution is chosen, it is set to the base resolution for each type of link, which is 10 in the standard protein residues.

Default value: 10

Plop info:

  • Plop control file name: ‘gridres’

  • Plop parameter name: ‘side_params%gridres’

  • Plop default value: 10

Overlap factor

We consider that two atoms are clashing when:

d12 < overlap_factor * (rvdw,1 + rvdw,2)

where d12 is the distance between them and rvdw,i is the Van der Waals radius of the i-th atom.

The program starts looking for non-clashing rotamers with an overlap factor = initial overlap factor. If it does not find any suitable rotamer (i.e. the algorithm failed), it decreases its value deltaOverlapFactor (=0.05). The process is repeated until overlap factor = minimal overlap factor.

initialOverlapFactor

Parameter: double initialOverlapFactor

Use: Initial overlap factor.

Note for developers: Used in ZhexinSideChainAlgorithm::run

Units: Dimensionless

Default value: 0.75

Plop info:

  • Plop control file name: ‘ofac_init’

  • Plop parameter name: ‘tree_params%ofac_init’

  • Plop default value: 0.75

minimalOverlapFactor

Parameter: double minimalOverlapFactor

Use: Minimal overlap factor. It is also used when we want a loose selection of non-clashing rotamers.

Note for developers: Used everywhere we need to know if the algorithm failed.

Units: Dimensionless

Default value: 0.7

Plop info:

  • Plop control file name: ‘ofac_min’

  • Plop parameter name: ‘tree_params%ofac_min’

  • Plop default value: 0.7

randomize

Parameter: bool randomize

Use: It only makes sense when the ‘zhexin’ algorithm is used. It randomizes the initial conformation of the selected links’ side chains. When it is false, numberOfIterations is not considered, since it becomes effectively 1.

Notes for developers: Used in ZhexinSideChainAlgorithm::findMinimumInEnergyUsingRotamerLibrary and ZhexinSideChainAlgorithm::findMinimumInEnergyUsingRotamerLibrary

Default value: false

Plop info:

  • Plop control file name: ‘rand’

  • Plop parameter name: ‘side_params%randomize’

  • Plop default value: False

discardHighEnergySolutions

Parameter bool discardHighEnergySolutions

Use: If the side chain prediction does not have backbone clashes (though it may have side chain clashes), but the solution structure has an energy higher than the initial energy (at least, 10 kcal/mol), then that solution is discarded if this parameter is true. When discarded, the initial structure is retained.

Default value: false

Plop info:

  • Plop control file name: ‘failsafe’

  • Plop parameter name: ‘side_params%failsafe’

  • Plop default value: True

numberOfIterations

Parameter: unsigned int numberOfIterations

Use: Number of iterations that the ‘zhexin’ algorithm is going to perform. This is only considered when randomize is true; otherwise, the effective number of iterations is 1.

Notes for developers: Used in ZhexinSideChainAlgorithm::findMinimumInEnergyUsingRotamerLibrary

Units: Dimensionless

Range: [0, inf)

Default value: 1

Plop info:

  • Plop control file name: ‘iter’

  • Plop parameter name: ‘side_params%niter’

  • Plop default value: 1

temperature

Parameter: double temperature

Use: Temperature to sample the rotamers in the ‘boltzmannSampling’ algorithm

Notes for developers: Used in SideChain::computeNonClashingRotamersProbabilities

Default value: 2000

Plop info:

  • Plop control file name: -

  • Plop parameter name: -

  • Plop default value: -

skipGlobalMinimization

Parameter: bool skipGlobalMinimization

Use: Flag to activate or deactivate the final relaxation minimization performed at the end of a side chain prediction.

Note for developers: Used in PeleStep::relax

Default value: false

sideChainMinimizer

Minimizer block.

If this block is not present, then no side chain prediction minimization is run.

Check the minimization block documentation (Minimization in Pele++ control file) for more information.

If this section is present, then this minimization is run at the end of each side chain prediction iteration; the minimization affects only the atoms considered during the side chain prediction. In this case (the “sideChainMinimizer” block is present, so the internal minimization will be performed), the default minimization type is “TruncatedNewton”, with the following default parameters (other parameters have the same default as shown in the minimization block documentation):

  • “EnergyDifference”: 1.0

  • “MinimumRMS”: 0.1

  • “MaximumMinimizationIterations”: 3

  • “MaximumNewtonIterations”: 65,

  • “nonBondingListUpdatedEachMinStep”: true

  • “alphaUpdated”: false

  • “sgbUpdated”: true

  • “iterationsBetweenNBlistLongUpdate”: 2

If the perturbation is active, also the perturbation constraints will be on (see removeBulkMovement). The permanent constraints (Permanent constraints in Pele++ control file) are also on.

By default, a final relaxation minimization is executed at the end of the side chain prediction phase in a PELE simulation, but this is configured in the "Minimizer" section of such command (see Minimization in Pele++ control file). This behaviour can be changed with the flag skipGlobalMinimization.